#
# logger.pl: logger functions!
# Author: dms
-# Version: 19991205
+# Version: v0.3 (20000731)
+# FVersion: 19991205
# NOTE: Based on code by Kevin Lenzo & Patrick Cole (c) 1997
#
use strict;
-use vars qw($logDate $loggingstatus $statcount $infobot_pid
- $statcountfix $addressed);
+use vars qw($logDate $loggingstatus $statcount $bot_pid
+ $statcountfix $addressed $logcount $logtime);
use vars qw(@backlog);
use vars qw(%param %file);
require 5.001;
+$logtime = time();
+
my %attributes = (
'clear' => 0,
'reset' => 0,
return unless (&IsParam("logfile"));
$file{log} = $param{'logfile'};
+ my $error = 0;
+ my $path = &getPath($file{log});
+ while (! -d $path) {
+ if ($error) {
+ &ERROR("openLog: failed opening log to $file{log}; disabling.");
+ delete $param{'logfile'};
+ return;
+ }
+
+ &status("openLog: making $path.");
+ last if (mkdir $path, 0755);
+ $error++;
+ }
+
if (&IsParam("logType") and $param{'logType'} =~ /DAILY/i) {
my ($day,$month,$year) = (localtime(time()))[3,4,5];
$logDate = sprintf("%04d%02d%02d",$year+1900,$month+1,$day);
}
sub FIXME {
- &status("${b_cyan}!FIXME!$ob $_[0] (SHOULD NOT HAPPEN)");
+ &status("${b_cyan}!FIXME!$ob $_[0] (SHOULD NOT HAPPEN?)");
+}
+
+sub TODO {
+ &status("${b_cyan}!TODO!$ob $_[0]");
}
sub VERB {
$statcount++;
# fix style of output if process is child.
- if (defined $infobot_pid and $$ != $infobot_pid and !defined $statcountfix) {
+ if (defined $bot_pid and $$ != $bot_pid and !defined $statcountfix) {
$statcount = 1;
$statcountfix = 1;
}
- # for logging and non-ansi control.
+ ### LOG THROTTLING.
+ ### TODO: move this _after_ printing?
+ my $time = time();
+ my $reset = 0;
+ if ($logtime != $time) {
+ $reset++;
+ } elsif ($logtime == $time) {
+ if ($logcount < 25) { # too high?
+ $logcount++;
+ } else {
+ sleep 1;
+ &status("LOG: Throttling."); # recursive?
+ $reset++;
+ }
+ }
+ if ($reset) {
+ $logtime = $time;
+ $logcount = 0;
+ }
+
+ # Log differently for forked/non-forked output.
if ($statcountfix) {
$status = "!$statcount! ".$input;
if ($statcount > 1000) {
print LOG "ERROR: FORKED PROCESS RAN AWAY; KILLING.\n";
+ print LOG "VERB: ".(&Time2String(time() - $forkedtime))."\n";
exit 0;
}
} else {
} else {
print "$printable\n";
}
+ } else {
+ print "VERBOSITY IS OFF?\n";
}
# log the line into a file.