#------------------------------------- # PRAGMAS use lib 'f:/projects/site/bin/config/'; use strict; use utf8; #------------------------------------- # IN HOUSE MODULES use csConfig; use csLogsConfig qw( csErrorLog csLogMaster ); use csLogs::Error; use csLogs::Event; use csDB qw( QueryDB SafeQuote ); use csMail; #===================================================================================== my $entries = 0; my( %severities,%classes ) = (); 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 and open the renamed file ... #--------------------------------- # process the entries $entries = process_errorlog($LOG,\%severities,\%classes); ... close and unlink temporary file, note that process ran successfully ... } else # file doesn't exist and no processing was necessary { ... note that process ran but had nothing to do ... } ... email summary of results and end ... #================================================================================================ sub process_errorlog { my ($LOG,$count_severities,$count_classes) = @_; 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> ) { /\[Error\]/ and do { if( $time ) # time gets set later in the parsing... { #add to db; THIS LINE> QueryDB("insert into csEvents (Time_Logged,Class,SubClass,Importance,Message,Info)". " values ('$time',1,$class,$severity,".SafeQuote($message).",".SafeQuote($debug).")" ); $entries++; #reset variables; ( $time, $class, $severity, $message, $debug ) = (); } $state = 'error'; next; }; ... more wholesome parsing goodness ... } # flush out last record if( $time ) { #add to db; THIS LINE> QueryDB("insert into csEvents (Time_Logged,Class,SubClass,Importance,Message,Info)". " values ('$time',1,$class,$severity,".SafeQuote($message).",".SafeQuote($debug).")" ); $entries++; } return $entries; } ... other subs ...