Commit | Line | Data |
---|---|---|
de45f55a AM |
1 | #!/usr/bin/perl -w |
2 | # | |
3 | # Copyright (c) 2003 Martin A. Godisch for Debian GNU/Linux, GPL | |
4 | ||
5 | =head1 NAME | |
6 | ||
7 | syslog2eximlog - make syslog output suitable for eximstats | |
8 | ||
9 | =head1 SYNOPSIS | |
10 | ||
11 | B<syslog2eximlog> B<<> I<mail.log> B<|> B<eximstats> | |
12 | ||
13 | =head1 DESCRIPTION | |
14 | ||
15 | syslog2eximlog converts logfiles produced by syslog when using | |
16 | B<log_file_path = syslog> in your I<exim.conf> back to exim | |
17 | logfile format, suitable for B<eximstats>. B<syslog_timestamp> | |
18 | may be B<true> or B<false>. | |
19 | ||
20 | The program always succeeds, invalid lines will be ignored. | |
21 | ||
22 | =head1 BUGS | |
23 | ||
24 | Please report any bugs directly to the author. | |
25 | ||
26 | =head1 AUTHOR | |
27 | ||
28 | Martin A. Godisch <godisch@debian.org> for Debian GNU/Linux. | |
29 | ||
30 | =head1 SEE ALSO | |
31 | ||
32 | B<eximstats>(8) | |
33 | ||
34 | =cut | |
35 | ||
36 | my @date = localtime(time); | |
37 | $date[4] += 1; | |
38 | $date[5] += 1900; | |
39 | my %names = ( | |
40 | "Jan", "01", "Feb", "02", "Mar", "03", "Apr", "04", | |
41 | "May", "05", "Jun", "06", "Jul", "07", "Aug", "08", | |
42 | "Sep", "09", "Oct", "10", "Nov", "11", "Dec", "12" | |
43 | ); | |
44 | ||
45 | while (<>) { | |
46 | next unless (s/^(\w{3})\s([\s\d]\d)\s(\d\d):(\d\d):(\d\d)\s\S+\sexim\[\d+\]:\s//); | |
47 | ||
48 | my ($month, $day, $hour, $min, $sec) = ($names{$1}, $2, $3, $4, $5); | |
49 | ||
50 | if (/^\d{4}-\d\d-\d\d\s\d\d:\d\d:\d\d\s/) { | |
51 | print $_; | |
52 | } else { | |
53 | printf "%04d-%02d-%02d %02d:%02d:%02d %s", | |
54 | # assume current year if month/day <= today, otherwise assume last year | |
55 | $month > $date[4] || $month == $date[4] && $day > $date[3] ? $date[5] - 1 : $date[5], | |
56 | $month, $day, $hour, $min, $sec, $_; | |
57 | } | |
58 | } | |
59 | ||
60 | exit 0; |