Hi, me again. Attached is a patch to mon to redirect the syslog to a log file and/or the syslog.
-m
--- mon-0.99.3-31/mon Mon May 19 14:26:35 2003 +++ mon/mon Tue Jun 24 09:24:41 2003 @@ -43,7 +43,8 @@ use Fcntl; use Socket; use Sys::Hostname; -use Sys::Syslog qw(:DEFAULT); +use Sys::Syslog qw(); +#use Sys::Syslog qw(:DEFAULT); use FileHandle; use Data::Dumper; @@ -232,6 +233,11 @@ Sys::Syslog::setlogsock ('unix'); } +# Default Logging to Syslog +*openlog = \&Sys::Syslog::openlog; +*closelog = \&Sys::Syslog::closelog; +*syslog = \&Sys::Syslog::syslog; + openlog ("mon", "cons,pid", $CF{"SYSLOG_FACILITY"}); # @@ -251,7 +257,20 @@ syslog_die ("$err"); } -closelog; +closelog(); + +# Set log file type +# +# Added two new config file options : logfile,syslog +# +# logfile : set to a filename (uses logdir) to syslog to a file and syslog +# syslog : set to false if you only want to syslog to a file +# +if (defined $CF{LOGFILE}) { + *openlog = \&log_openlog; + *closelog = \&log_closelog; + *syslog = \&log_syslog; +} openlog ("mon", "cons,pid", $CF{"SYSLOG_FACILITY"}); @@ -988,6 +1007,12 @@ } elsif ($1 eq "syslog_facility") { $new_CF{"SYSLOG_FACILITY"} = $2; + } elsif ($1 eq "logfile") { + $new_CF{"LOGFILE"} = $2; + + } elsif ($1 eq "syslog") { + $new_CF{"SYSLOG"} = $2; + } elsif ($1 eq "startupalerts_on_reset") { if ($2 =~ /^1|yes|true|on$/i) { $new_CF{"STARTUPALERTS_ON_RESET"} = 1; @@ -4853,6 +4878,39 @@ syslog ("err", $msg); die "$msg\n"; +} + +sub log_openlog { + my ($log_prefix, $logopt, $facility) = @_; + my $logfile = $CF{LOGFILE}; + my $logdir = $CF{LOGDIR}; + + open (SYSLOG,"+>> $logdir/$logfile") or die "Can't open logfile $logdir/$logfile. $!\n"; + + unless (defined $CF{SYSLOG} and $CF{SYSLOG} =~ /^(false|0|no)$/){ + Sys::Syslog::openlog(@_); + } +} + +sub log_closelog { + close (SYSLOG) or die "Can't write SYSLOG. $!\n"; + + unless (defined $CF{SYSLOG} and $CF{SYSLOG} =~ /^(false|0|no)$/){ + Sys::Syslog::closelog(@_); + } +} + +sub log_syslog { + unless (defined $CF{SYSLOG} and $CF{SYSLOG} =~ /^(false|0|no)$/){ + Sys::Syslog::syslog(@_); + } + my ($priority,$format,@args) = @_; + + my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); + $year +=1900; $mon++; + + # give max 7 spaces for priority type. + printf SYSLOG "%02d%02d%d %02d:%02d %-9s $format \n", $mon,$mday,$year,$hour,$min,"[$priority]",@args; }
_______________________________________________ mon mailing list [EMAIL PROTECTED] http://linux.kernel.org/mailman/listinfo/mon