Nenad Cimerman
2011-Jun-16 14:38 UTC
[Logcheck-devel] Bug#630721: logcheck: improve support for non-POSIX charsets in generated report
Package: logcheck Version: 1.2.69 Severity: normal Tags: l10n My system is setup with non-POSIX default locale (see below), using UTF-8 character encoding. This leads to many lines inside various log files (e.g. /var/log/syslog) containing 'german umlaut' characters (???????). During normal system usage in bash, less, vi etc. everything works as expected - all characters are shown correctly. However, logcheck behaves different: report sent by e-mail contain unreadable characters instead of 'german umlaut' characters. Before sending this bug report, I investigated thoroughly what is causing the problem and was able to find the culprit. I was also able to solve the problem for me - but it did cost me a couple of hours, which is driving me to report this as a bug. To be clear about this issue: I'm totally aware, that system log files may contain all kind of encoded characters, making this problem really unsolvable in a 100% complete manner. On the other hand, in real life things can be improved significantly, using a more lax approach. In fact I believe, that most systems are using only one locale for system administration, which makes the solution of this problem (at least in my case) quite simple. ........Details....... The script /usr/sbin/logcheck is usually run by the cron deamon, based on /etc/cron.d/logcheck. This process runs in POSIX locale (LC_ALL=POSIX, LANG=POSIX), despite /etc/default/locale being possibly set to a different locale. Inside /usr/sbin/logcheck, the function sendreport() uses mail(1) or nail(1) to deliver the report via e-mail. Additionally, sending report as an attachment depends on nail(1) beeing installed. By default, reports are sent 'inline' (not as an attachment), which results in mail(1) beeing used. Unfortunately mail(1) is responsible for the characterset issue, as it does ignore the locale settings completely. All of this could be simplified and improved, when using mutt(1) instead: + produces correct encoding of e-mails, depending on locale settings + is able to send attachments using '-a' option In my case, I did the following to solve the problem: 1. added the following line to /etc/cron.d/logcheck LC_ALL=de_DE.UTF-8 2. changed sendreport() funtion in /usr/sbin/logcheck: sendreport() { MAILER=${MAILER:-mutt} if [ $REBOOT -eq 1 ]; then subject="Reboot: $HOSTNAME $DATE $*" else subject="$HOSTNAME $DATE $*" fi if [ $ADDTAG = "yes" ]; then subject="[logcheck] $subject" fi if [ $MAILOUT -eq 1 ]; then debug "Sending report to STDOUT" cat $TMPDIR/report debug "Sent report to STDOUT" else debug "Sending report: '$subject' to $SENDMAILTO" if [ $MAILASATTACH -eq 1 ]; then debug "Sending report as attachment" if command -v $MAILER >/dev/null; then echo -e "Report attached" | $MAILER -s "$subject" -a "$TMPDIR/report" "$SENDMAILTO" return $? else echo >> $TMPDIR/report echo Could not send report as attachment, $MAILER not installed >> $TMPDIR/report fi fi cat $TMPDIR/report | $MAILER -s "$subject" "$SENDMAILTO" fi } Here is the diff-output showing my changes: # diff /usr/sbin/logcheck logcheck 284d283 < MAILER=${MAILER:-mutt} 302,303c301,302 < if command -v $MAILER >/dev/null; then < echo -e "Report attached" | $MAILER -s "$subject" -a "$TMPDIR/report" "$SENDMAILTO" ---> if command -v nail >/dev/null; then > echo -e "Report attached" | nail -s "$subject" -a "$TMPDIR/report" "$SENDMAILTO"307c306 < echo Could not send report as attachment, $MAILER not installed >> $TMPDIR/report ---> echo Could not send report as attachment, nail not installed >> $TMPDIR/report310c309 < cat $TMPDIR/report | $MAILER -s "$subject" "$SENDMAILTO" ---> cat $TMPDIR/report | mail -s "$subject" "$SENDMAILTO"319a319>Regards, Nenad. -- System Information: Debian Release: 5.0.8 APT prefers oldstable APT policy: (500, 'oldstable') Architecture: i386 (i686) Kernel: Linux 2.6.26-2-686 (SMP w/1 CPU core) Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages logcheck depends on: ii adduser 3.110 add and remove users and groups ii bsd-mailx [mailx] 8.1.2-0.20071201cvs-3 A simple mail user agent ii cron 3.0pl1-105 management of regular background p ii exim4 4.69-9+lenny4 metapackage to ease Exim MTA (v4) ii exim4-daemon-heavy 4.69-9+lenny4 Exim MTA (v4) daemon with extended ii lockfile-progs 0.1.11-0.1 Programs for locking and unlocking ii logtail 1.2.69 Print log file lines that have not ii mailx 1:20071201-3 Transitional package for mailx ren ii rsyslog [system-lo 3.18.6-4 enhanced multi-threaded syslogd Versions of packages logcheck recommends: ii logcheck-database 1.2.69 database of system log rules for t Versions of packages logcheck suggests: pn syslog-summary <none> (no description available) -- no debconf information
martin f krafft
2011-Jun-16 15:19 UTC
[Logcheck-devel] Bug#630721: logcheck: improve support for non-POSIX charsets in generated report
also sprach Nenad Cimerman <ncimerman at googlemail.com> [2011.06.16.1638 +0200]:> 1. added the following line to /etc/cron.d/logcheck > LC_ALL=de_DE.UTF-8Logcheck should override this again, no? The reason is, btw, that grep takes about 4 times as long with Unicode as it does with POSIX. -- .''`. martin f. krafft <madduck at d.o> Related projects: : :' : proud Debian developer http://debiansystem.info `. `'` http://people.debian.org/~madduck http://vcs-pkg.org `- Debian - when you have better things to do than fixing systems -------------- next part -------------- A non-text attachment was scrubbed... Name: digital_signature_gpg.asc Type: application/pgp-signature Size: 1124 bytes Desc: Digital signature (see http://martin-krafft.net/gpg/sig-policy/999bbcc4/current) URL: <http://lists.alioth.debian.org/pipermail/logcheck-devel/attachments/20110616/bfeca4a9/attachment-0001.pgp>