#! @PERL@ -w # vim:syntax=perl use strict; use lib '@LR_PERL5LIBDIR@'; use Lire::DlfSchema; use Lire::Syslog; use Lire::Program qw( :msg :dlf ); my $schema = eval { Lire::DlfSchema::load_schema( "syslog" ) }; lr_err( "failed to load syslog schema: $@" ) if $@; my $dlf_maker; my $lines = 0; my $dlflines = 0; my $errorlines = 0; my $parser = new Lire::Syslog(); init_dlf_converter( "syslog" ); while ( <> ) { lire_chomp(); $lines++; my $rec = eval { $parser->parse($_); }; if ( $@ ) { lr_warn( $@ ); $errorlines++; next; } unless (defined $dlf_maker ) { # Create the DLF schema function based on the available fields my @fields = qw/timestamp hostname process pid message /; push @fields, "facility" if exists $rec->{facility}; push @fields, "level" if exists $rec->{level}; $dlf_maker = $schema->make_hashref2asciidlf_func( @fields ); } $rec->{message} = $rec->{content}; my $dlf = $dlf_maker->( $rec ); $dlflines++; print join( " ", @$dlf ), "\n"; } end_dlf_converter( $lines, $dlflines, $errorlines ); __END__ =pod =head1 NAME syslog2dlf - convert syslog log files to DLF =head1 SYNOPSIS B =head1 DESCRIPTION This script uses the Lire::Syslog module to create a DLF representation of the syslog log files. It can process all the syslog log formats supported by that module. =head1 EXAMPLES To process a log as produced by syslog: $ syslog2dlf < syslog.log syslog2dlf will be rarely used on its own, but is more likely called by lr_log2report: $ lr_log2report syslog < /var/log/syslog.log =head1 SEE ALSO Lire::Syslog(3pm) =head1 VERSION $Id: syslog2dlf.in,v 1.6 2006/07/23 13:16:36 vanbaal Exp $ =head1 AUTHOR Francis J. Lacoste =head1 COPYRIGHT Copyright (C) 2002 Stichting LogReport Foundation LogReport@LogReport.org This program is part of Lire. Lire is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program (see COPYING); if not, check with http://www.gnu.org/copyleft/gpl.html. =cut # Local Variables: # mode: cperl # End: