Developers notes – APC UPS control system User Manual

Page 121

Advertising
background image

More work needs to be done to the code to ensure that it corresponds to the
above levels.

As a practical example of how to setup your syslog() to use the new log-
ging feature, suppose you wish to direct all DATA logging to a file named
/var/log/apcupsd.data, all EVENTS to the standard /var/log/messages file
(to be mixed with other system messages), and at the same time send all
EVENTS to /var/log/apcupsd.events, and finally, you want to send all STA-
TUS logging to the named pipe /var/log/apcupsd.status

First as root, you create the named pipe:

mkfifo /var/log/apcupsd.status

Change its permissions as necessary or use the -m option to set them when
creating the pipe.

Then you modify your /etc/syslog.conf file to direct the appropriate levels
of messages where you want them. To accomplish the above, my syslog.conf
file looks like:

# exclude all apcupsd info by default
*.info;local0.none

/var/log/messages

# Everything for apcupsd goes here
local0.info;local0.!notice

/var/log/apcupsd.data

local0.notice;local0.!warn

|/var/log/apcupsd.status

local0.warn

/var/log/apcupsd.events

local0.warn

/var/log/messages

Developers Notes

All logging functions and all error reporting are now done through the
log event() subroutine call. Exceptions to this are: initialization code where
printf’s are done, and writing to the status file. Once the initialization code
has completed and the fork() to become a daemon is done, no printf’s are
used. log event() has exactly the same format as syslog(). In fact, the sub-
routine consists of only a syslog() call. If anyone really wishes to log to a
file, the code to do so can easily be done by adding code to log event() in
apclog.c.

120

Advertising