hpux 10.20 - syslog (3)
NAME
syslog(), openlog(), closelog(), setlogmask() - control system log
SYNOPSIS
#include <syslog.h>
void syslog(int priority, const char *message, ...);
void openlog(const char *ident, int logopt, int facility);
void closelog(void);
int setlogmask(int maskpri);
Remarks
The ANSI C ", ... " construct denotes a variable length argument list
whose optional [or required] members are given in the associated
comment (/* */).
DESCRIPTION
syslog() writes a message onto the system log maintained by
syslogd (see syslogd(1M)). The message is tagged with
priority. The message is similar to a printf(3S)
format string except that %m is replaced by the error
message associated with the current value of errno. A
trailing newline is added if needed.
This message is read by syslogd and written to the
system console, log files, selected users' terminals,
or forwarded to syslogd on another host as appropriate.
priority is encoded as the logical OR of a level and a
facility. The level signifies the urgency of the
message, and facility signifies the subsystem
generating the message. facility can be encoded
explicitly in priority, or a default facility can be
set with openlog() (see below).
level is selected from an ordered list:
LOG_EMERG A panic condition. This is
normally broadcast to all
users.
LOG_ALERT A condition that should be
corrected immediately, such as
a corrupted system database.
LOG_CRIT Critical conditions, such as
hard device errors.
LOG_ERR Errors.
LOG_WARNING Warning messages.
LOG_NOTICE Conditions that are not error
conditions, but should
possibly be handled specially.
LOG_INFO Informational messages.
LOG_DEBUG Messages that contain
information normally of use
only when debugging a program.
syslog() does not log a message that does not have a
level set.
If syslog() cannot pass the message to syslogd, it
attempts to write the message on /dev/console if the
LOG_CONS option is set (see below).
openlog() can be called to initialize the log file, if special
processing is needed. ident is a string that precedes
every message. logopt is a mask of bits, logically
OR'ed together, indicating logging options. The values
for logopt are:
LOG_PID Log the process ID with each
message; useful for
identifying instantiations of
daemons.
LOG_CONS Force writing messages to the
console if unable to send it
to syslogd. This option is
safe to use in daemon
processes that have no
controlling terminal because
syslog() forks before opening
the console.
LOG_NDELAY Open the connection to syslogd
immediately. Normally, the
open is delayed until the
first message is logged. This
is useful for programs that
need to manage the order in
which file descriptors are
allocated.
LOG_NOWAIT Do not wait for children
forked to log messages on the
console. This option should
be used by processes that
enable notification of child
termination via SIGCLD,
because syslog() might
otherwise block, waiting for a
child whose exit status has
already been collected.
facility encodes a default facility to be assigned to
all messages written subsequently by syslog() with no
explicit facility encoded.
LOG_KERN Messages generated by the
kernel. These cannot be
generated by any user
processes.
LOG_USER Messages generated by random
user processes. This is the
default facility identifier if
none is specified.
LOG_MAIL The mail system.
LOG_DAEMON System daemons, such as
inetd(1M), ftpd(1M), etc.
LOG_AUTH The authorization system:
login(1), su(1), getty(1M),
etc.
LOG_LPR The line printer spooling
system: lp(1), lpsched(1M),
etc.
LOG_LOCAL0 Reserved for local use.
Similarly for LOG_LOCAL1
through LOG_LOCAL7.
closelog() closes the log file.
setlogmask() sets the log priority mask to maskpri and returns the
previous mask. Calls to syslog() with a priority not
set in maskpri are rejected. The mask for an
individual priority pri is calculated by the macro
LOG_MASK(pri)); the mask for all priorities up to and
including toppri is given by the macro
LOG_UPTO(toppri). By default, all priorities are
logged.
ERRORS
syslog fails if any of the following conditions are encountered:
[EAGAIN] The named pipe /dev/log is blocked for writing.
[ENOENT] The named pipe /dev/log bold) could not be opened
successfully.
EXAMPLES
who logs a message regarding some sort of unexpected and serious
error:
syslog(LOG_ALERT, "who: internal error 23");
ftpd uses openlog() to arrange to log its process ID, to log to the
console if necessary, and to log in the name of the daemon facility:
openlog("ftpd", LOG_PID|LOG_CONS, LOG_DAEMON);
Arrange to log messages only at levels LOG_ERR and lower:
setlogmask(LOG_UPTO(LOG_ERR));
Typical usage of syslog() to log a connection:
syslog(LOG_INFO, "Connection from host %d", CallingHost);
If the facility has not been set with openlog(), it defaults to
LOG_USER.
Explicitly set the facility for this message:
syslog(LOG_INFO|LOG_LOCAL2, "foobar error: %m");
WARNINGS
A call to syslog() has no effect unless the syslog daemon
(syslogd(1M)) is running. openlog() does not copy and store the ident
string internally; it stores only a character pointer. Therefore it
is the responsibility of the programmer to make sure that the ident
argument points to the correct string until the log file is closed.
AUTHOR
syslog() was developed by the University of California, Berkeley.
SEE ALSO
logger(1), syslogd(1M).