Mimo próśb, błagań, krzyków na monitor i krwawych ofiar składanych w blasku księżyca, program
Zła wiadomość jest taka, że prawdopodobnie nie doczekamy się wsparcia dla dat ISO w tych programach. Problem jest znany od jakiegoś czasu, a jedyna informacja od twórców brzmi mniej więcej "wiemy, do zobaczenia i dzięki za ryby". Trzeba zatem zakasać rękawy i poprawić programy samemu. I tutaj pojawia się wiadomość przerażająca - oba narzędzia napisane są w Perlu. Tak, w tym języku luźno wzorowanym na /dev/urandom. Zanim jednak rozpoczniecie ciche popłakiwanie w kącie, rozweselę Was nieco podając gotowe rozwiązanie.
W przypadku postfix-logwatch poprawka jest banalnie prosta. Wystarczy nałożyć poniższy patch:
--- postfix-logwatch-1.40.00.orig/postfix-logwatch 2012-01-12 01:22:25.000000000 +0100
+++ postfix-logwatch-1.40.00/postfix-logwatch 2013-02-06 14:37:24.970844035 +0100
@@ -2700,7 +2700,7 @@
# Aug 17 15:16:12 mailhost postfix/cleanup[14194]: [ID 197553 mail.info] EC2B339E5: message-id=<2616.EC2B339E5@example.com>
# Dec 25 05:20:28 mailhost policyd-spf[14194]: [ID 27553 mail.info] ... policyd-spf stuff ...
- next unless /^[A-Z][a-z]{2} [ \d]\d \d{2}:\d{2}:\d{2} (?:<[^>]+> )?(\S+) ($Opts{'syslog_name'}(?:\/([^:[]+))?)(?:\[\d+\])?: (?:\[ID \d+ \w+\.\w+\] )?(.*)$/o;
+ next unless /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+\+\d{2}:\d{2} (?:<[^>]+> )?(\S+) ($Opts{'syslog_name'}(?:\/([^:[]+))?)(?:\[\d+\])?: (?:\[ID \d+ \w+\.\w+\] )?(.*)$/o;
our $service_name = $3;
my ($mailhost,$server_name,$p1) = ($1,$2,$4);Z logwatch niestety już nie jest tak różowo. Naszą przygodę z poprawianiem tego programu zaczniemy od utworzenia pliku ${BaseDir}/scripts/logfiles/maillog/applydate o zawartości:
use POSIX qw(strftime);
use Logwatch ':dates';
my $time = time;
my $Debug = $ENV{'LOGWATCH_DEBUG'} || 0;
$SearchDate = TimeFilter('%Y-%m-%dT%H:%M:%S\.\d+\+\d{2}:\d{2} ');
if ($Debug > 5) {
print STDERR "DEBUG: Inside ApplyDate (maillog)...\n";
print STDERR "DEBUG: Looking For: $SearchDate or $SearchYear\n";
}
while (defined($ThisLine = )) {
if ($ThisLine =~ s/$SearchDate//o) {
print $ThisLine;
}
} Dodatkowo trzeba zmodyfikować dwa pliki: ${BaseDir}/scripts/shared/onlyservice:
--- onlyservice.orig 2013-02-06 15:52:36.538142311 +0100
+++ onlyservice 2013-02-06 15:45:36.814983757 +0100
@@ -34,6 +34,9 @@
elsif ($ThisLine =~ m/^... .. ..:..:.. [^ ]* [^ ]*(\[[0123456789]*\])?: \[ID [0-9]+ $ServiceName/io) {
print $ThisLine;
}
+ elsif ($ThisLine =~ m/^[ ]*[^ ]* $ServiceName(\[[0123456789]*\])?:? /io) {
+ print $ThisLine;
+ }
}
# vi: shiftwidth=3 syntax=perl tabstop=3 etoraz ${BaseDir}/default.conf/logfiles/maillog.conf:
--- maillog.conf.orig 2013-02-06 15:55:55.643434032 +0100 +++ maillog.conf 2013-02-06 15:21:03.075771229 +0100 @@ -34,6 +34,6 @@ *ExpandRepeats # Keep only the lines in the proper date range... -*ApplyStdDate +#*ApplyStdDate # vi: shiftwidth=3 tabstop=3 et
Po takich zabiegach
Brak komentarzy:
Prześlij komentarz
Uwaga. Komentarze są moderowane i mogą nie pojawić się natychmiast po utworzeniu. Autor niniejszego bloga zastrzega sobie prawo do niedopuszczenia komentarzy będących SPAMem i/lub nie odnoszących się do komentowanego wpisu i/lub łamiących zasady kulturalnej wymiany opinii.