--- sysplogd 2009/04/14 13:36:09 17 +++ sysplogd 2009/04/14 14:19:59 18 @@ -120,12 +120,20 @@ my $ip = join('.', unpack('C4',$ipaddr)); my @values = ( $ip, $hostname, $buf ); - if ( $buf =~ /<(\d+)>(?:\w\w\w \d+ \d\d:\d\d:\d\d)?\s*(\S*)\s*:\s*(.*)/ ) { - $values[2] = $3; + if ( $buf =~ s/<(\d+)>// ) { my $level = $1 % 8; my $facility = ( $1-$level ) / 8; - my $program = $2; - my $pid = $1 if $program =~ s/\[(\d+)\]$//; + + $buf =~ s/^\w\w\w \d+ \d\d:\d\d:\d\d//; # strip timestamp which some syslog servers insert here + + my ( $program, $pid ); + + if ( $buf =~ s/^\s*([^:]+)\s*:\s*// ) { + $program = $1; + $pid = $1 if $program =~ s/\[(\d+)\]$//; + } + + $values[2] = $buf; push @values, ( $level, $facility, $program, $pid ); $sth_log_full->execute( @values ); } else {