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