use lib 'f:/projects/site/bin/config/'; use strict; use utf8; use csConfig; use csLogsConfig; use csLogs::Error; use csLogs::Event; use csDB; if (-f &csErrorLog) # file exists and needs to be processed { my $tmp_logfile = csPath('logs').'/errors'.time().'.log'; my $LOG = undef; #--------------------------------- # renaming the file assures that the processing # this script does doesn't interfere with normal logging. rename(&csErrorLog,$tmp_logfile) or csDie( class=>csErrorClass('CODE_FILE_IO'),severity=>csErrorScale('MODERATE'), message=>'Error Log Parser could not rename log to a temporary file.', debug=>"original filename: '".&csErrorLog."'\nnew filename: '$tmp_logfile'" ); open($LOG,$tmp_logfile) or csDie( class=>csErrorClass('CODE_FILE_IO'),severity=>csErrorScale('MODERATE'), message=>'Error Log Parser could not open the renamed log file.', debug=>"filename: '$tmp_logfile'" ); #--------------------------------- # process the entries my $entries = process_errorlog($LOG); Event::NoteEvent( class=>csEventClass('TOOL_ACTION'),importance=>csEventScale('LOW'), message=>'Error Log Parser successfully processed the error log', info=>"$entries log entries processed from '".&csErrorLog."'" ); #--------------------------------- # with processing completed dispose of the temp log file. close($LOG); unlink($tmp_logfile) or csDie( class=>csErrorClass('CODE_FILE_IO'),severity=>csErrorScale('MODERATE'), message=>'Error Log Parser could remove the renamed log file.', debug=>"filename: '$tmp_logfile'" ); } else # file doesn't exist and no processing was necessary { Event::NoteEvent( class=>csEventClass('TOOL_ACTION'),importance=>csEventScale('LOW'), message=>"Error Log Parser ran but '".&csErrorLog."' was not found", info=>"parser assumes no errors have been logged since the parser was last run." ); } #exit #================================================================================================ sub process_errorlog { my $LOG = $_[0]; my $entries = 0; # track num of entries processed. my $state = 'none'; #state of the parser; my ( $time, $class, $severity, $message, $debug ) = (); #--------------------------------- # walk the file while( <$LOG> ) { ....fun with regex's and such.... } if( $time ) { ....temporary inelegance to flush out the last record.... } return $entries; }