Hello, I wanted to have spamd print logging messages on stderr (or stdout) so that I could use multilog program for logging instead of syslog.
Attached is a patch to do just that.
--- /usr/local/bin/spamd Mon Jul 8 14:56:42 2002 +++ spamd Mon Jul 8 15:53:35 2002 @@ -19,6 +19,7 @@ use POSIX qw(setsid); use Getopt::Long; use Pod::Usage; +use IO::Handle; use POSIX ":sys_wait_h"; my %resphash = ( @@ -43,6 +44,8 @@ # defaults my %opt = ('user-config' => 1); +autoflush STDERR 1; + Getopt::Long::Configure ("bundling"); GetOptions( 'auto-whitelist|whitelist|a' => \$opt{'auto-whitelist'}, @@ -204,6 +207,7 @@ warn "server started on port $port\n"; warn "server pid: $$\n"; } + logmsg "server started on port $port"; for ( ; ($paddr = accept(Client,Server)) ; close Client) @@ -622,6 +626,15 @@ sub logmsg { + if($log_facility =~ /stderr/i) { + print STDERR @_; + print STDERR "\n" unless(substr($_[-1], -1) eq "\n"); + } + elsif($log_facility =~ /stdout/i) { + print STDOUT @_; + print STDOUT "\n" unless(substr($_[-1], -1) eq "\n"); + } + else { my $old = $SIG{'PIPE'}; $SIG{'PIPE'} = sub { $main::SIGPIPE_RECEIVED++; }; @@ -653,6 +666,7 @@ } $SIG{'PIPE'} = $old if defined($old); + } } sub kill_handler @@ -708,7 +722,8 @@ -p port, --port Listen on specified port (default: 783) -q, --sql-config Enable SQL config (only useful with -x) -r pidfile, --pidfile Write the process id to pidfile - -s facility, --syslog=facility Specify the syslog facility (default: mail) + -s facility, --syslog=facility Specify the syslog facility (default: mail). + You can specify stderr or stdout to print to +STDERR/STDOUT -u username, --username=username Run as username -v, --vpopmail Enable vpopmail config -x, --nouser-config Disable user config files
msg07173/pgp00000.pgp
Description: PGP signature