syslogファイルをパースする


 Parse:Syslogモジュールを使うと簡単です。
use strict;
use warnings;
use Parse::Syslog;

my $filename = '/var/log/messages'; # syslogファイル名
my $year = 2005; # syslog開始年

my $ps = Parse::Syslog->new($filename, year => $year);

while (my $log = $ps->next) {
    printf "time: %s\n",  $log->{timestamp};
    printf "host: %s\n",  $log->{host};
    printf "prog: %s\n",  $log->{program};
    printf "pid : %s\n",  $log->{pid} || '';
    printf "text: %s\n",  $log->{text};
    print "\n";
}
 newの中でyearでsyslog開始年を設定しています。通常syslogファイルの日時の部分には年の情報が出力されないために、ここで開始年を指定します。yearを省略した場合は当年を指定したことになります。

関連項目

syslogにメッセージを出力する