syslog(SLIB)
openlog, syslog, closelog, setlogmask, vsyslog --
control system log
Syntax
cc ... -lsocket
#include <syslog.h>
void
openlog(ident, logopt, facility)
char *ident;
int logopt, facility;
void
syslog(priority, message [, arg ] . . .
int priority;
const char *message;
void
closelog()
int
setlogmask(maskpri) /* Returns old mask */
int maskpri;
#include <syslog.h>
#include <varargs.h>
void
vsyslog(priority, message, args)
int priority;
char *message;
va_list args;
Description
syslog arranges to write message
onto the system log maintained by
syslogd(ADM).
message is tagged with priority.
message is processed like the format parameter to
printf(S),
except that the additional conversion specifier %m can be used;
it is replaced with the current error message in errno.
A trailing newline is added to message
if one is not supplied.
The behavior of syslog is undefined if there are more
conversion specifiers in message than matching args.
If there are more args than conversion specifiers,
the extra args are ignored.
vsyslog works just like syslog,
except that the arguments used to replace any conversion specifiers
in message have already been captured using the
variable-length argument facilities of
varargs(S).
message is read by syslogd
and written either to the system console, log files, or
forwarded to syslogd on another host.
Priorities are encoded as a facility
and a level.
facility describes the part of the system
generating the message.
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, for example, hard device errors.
LOG_ERR-
Errors.
LOG_WARNING-
Warning messages.
LOG_NOTICE-
Conditions that are not error conditions,
but may require special handling.
LOG_INFO-
Informational messages.
LOG_DEBUG-
Messages that contain information
normally of use only when debugging a program.
If syslog cannot pass the message to
syslogd, it attempts to write the message on
/dev/console
(if the LOG_CONS option is set).
If special processing is needed, openlog
can be called to initialize the log file.
ident
is a string that is prepended to every message.
logopt is a bit field indicating logging options.
Possible values for logopt are:
LOG_PID-
Log the process id with each message.
This is 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 forked children to log messages on the console.
This option should be used by processes that enable notification
of child termination via SIGCHLD, because syslog
may otherwise block waiting for a child whose exit status has already
been collected.
LOG_PERROR-
Write the message to stderr.
facility
encodes a default facility to be assigned to all messages
that do not have an explicit facility encoded:
LOG_AUTH-
Messages generated by programs that authenticate users.
LOG_AUTHPRIV-
Messages generated by programs that authenticate users.
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
ftpd(ADMN),
routed(ADMN),
etc.
LOG_NEWS-
The network news system.
LOG_SYSLOG-
Messages generated internally by syslogd.
LOG_UUCP-
Messages generated by programs that deal with
uucp(C).
LOG_LPR-
The line printer spooling system
lpd(ADMN).
LOG_LOCAL0-
Reserved for local use.
LOG_LOCAL1 through LOG_LOCAL7
are also reserved.
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).
The default allows all priorities to be logged.
Examples
openlog("ftpd", LOG_PID, LOG_DAEMON);
setlogmask(LOG_UPTO(LOG_ERR));
syslog(LOG_ALERT, "who: internal error 23");
syslog(LOG_INFO, "Connection from host %d", callinghostname);
syslog(LOG_INFO|LOG_LOCAL2, "foobar error: %m");
syslog(LOG_INFO, "This is the %d connection from host %s",
connection_id, callinghostname);
syslog(LOG_INFO,
"Connection number %d from host %s failed with error: %m",
connection_id, callinghostname);
See also
logger(C),
syslogd(ADM)
© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003