Ged Haywood wrote:

> Hi there,
> 
> On Thu, 6 Dec 2001, Lance Uyehara wrote:
> 
> 
>>ErrorLog syslog
>>
> 
> Are you sure you want to do this?
> 
> 
>>How do I get the warnings when syslog is used?
>>
> 
> There are some tips in Stas Bekman's new book, not yet published
> (you'll have to become a reviwer:) and you will find some help in the
> guide -- http://perl.apache.org/guide/porting.html#Apache_and_syslog


Too many people suggested that we plunge the syslog section because of 
its slowness and unreliability. You should use log_spread instead if you 
need to collect logs from many machines.

Since this section ss probably going away, here it is:

The syslog solution can be implemented using the following
configuration:

   LogFormat "%h %l %u %t \"%r\" %>s %b" common
   CustomLog "| /usr/local/apache/bin/syslogger.pl hostnameX" common

where a simple I<syslogger.pl> can look like this:

   syslogger.pl
   ------------
   #!/usr/bin/perl
   use Sys::Syslog qw(:DEFAULT setlogsock);

   my $hostname = shift || 'localhost';
   my $priority = 'ndelay'; # open the connection immediately
   my $facility = 'local0'; # one of local0..local7
   my $priority = 'info';   # debug|info|notice|warning|err...

   setlogsock 'unix';
   openlog $hostname, $priority, $facility;
   while (<>) {
       chomp;
       syslog $priority, $_;
   }
   closelog;

The syslog utility needs to know the facility to work with and the
logging level. We will use C<local0>, one of the special logging
facilities reserved for local usage (eight local facilities are
available: local0 to local7). We will use the C<info> priority level
(again one of eight possible levels: I<debug>, I<info>, I<notice>,
I<warning>, I<err>, I<crit>, I<alert>, I<emerg>).

Now make the syslog utility on the master machine (where all logs are
to be stored) log all messages coming from facility C<local0> with
logging level C<info> to a file of our choice. This is achieved by
editing the I</etc/syslog.conf> file. For example:

   local0.info /var/log/web/access_log

All other machines forward their logs from facility C<local0> to the
central machine, therefore on all but the master machine we add the
forwarding directive to the I</etc/syslog.conf> file (assuming that
the master machine's hostname is C<masterhost>):

   local0.info @masterhost

We must restart the syslogd(8) daemon or send it the C<-HUP> kill
signal for the changes to take effect before the logger can be used.


_____________________________________________________________________
Stas Bekman             JAm_pH      --   Just Another mod_perl Hacker
http://stason.org/      mod_perl Guide   http://perl.apache.org/guide
mailto:[EMAIL PROTECTED]  http://ticketmaster.com http://apacheweek.com
http://singlesheaven.com http://perl.apache.org http://perlmonth.com/

Reply via email to