syslog
NAME
closelog, openlog, syslog - send messages to the system logger
SYNOPSIS
#include <syslog.h>
I void openlog(const char * ident , int option , int facility );
I void syslog(int priority , const char * format , ...);
I void closelog(void); #define _BSD_SOURCE
#include <stdarg.h> I void vsyslog(int priority , const char * format , va_list ap );
I void syslog(int priority , const char * format , ...);
I void closelog(void); #define _BSD_SOURCE
#include <stdarg.h> I void vsyslog(int priority , const char * format , va_list ap );
DESCRIPTION
R closelog ()
closes the descriptor being used to write to the system logger.
The use of
R closelog ()
is optional.
R openlog ()
opens a connection to the system logger for a program.
The string pointed to by
ident
is prepended to every message, and is typically set to the program name.
The
option
argument specifies flags which control the operation of
R openlog ()
and subsequent calls to
R syslog ().
The
facility
argument establishes a default to be used if
none is specified in subsequent calls to
R syslog ().
Values for
option
and
facility
are given below.
The use of
R openlog ()
is optional; it will automatically be called by
R syslog ()
if necessary, in which case
ident
will default to NULL.
R syslog ()
generates a log message, which will be distributed by
syslogd(8).
The
priority
argument is formed by ORing the
facility
and the
level
values (explained below).
The remaining arguments
are a
R format ,
as in
printf(3)
and any arguments required by the
R format ,
except that the two character sequence %m will be replaced by
the error message string
R strerror ( errno ).
A trailing newline may be added if needed.
The function
R vsyslog ()
performs the same task as
R syslog ()
with the difference that it takes a set of arguments which have
been obtained using the
stdarg(3)
variable argument list macros.
The subsections below lists the parameters used to set the values of
R option , facility , and priority .
option
The option argument to R openlog () is an OR of any of these:LOG_CONS
Write directly to system console if there is an error while sending to
system logger.
LOG_NDELAY
Open the connection immediately (normally, the connection is opened when
the first message is logged).
LOG_NOWAIT
Don't wait for child processes that may have been created while logging
the message.
(The GNU C library does not create a child process, so this
option has no effect on Linux.)
LOG_ODELAY
The converse of
R LOG_NDELAY ;
opening of the connection is delayed until
R syslog ()
is called.
(This is the default, and need not be specified.)
LOG_PERROR
(Not in POSIX.1-2001.)
Print to stderr as well.
LOG_PID
LOG_AUTH
security/authorization messages (DEPRECATED Use
LOG_AUTHPRIV
instead)
LOG_AUTHPRIV
security/authorization messages (private)
LOG_CRON
clock daemon
(cron and at)
LOG_DAEMON
system daemons without separate facility value
LOG_FTP
ftp daemon
LOG_KERN
kernel messages
R LOG_LOCAL0 through LOG_LOCAL7
reserved for local use
LOG_LPR
line printer subsystem
LOG_MAIL
mail subsystem
LOG_NEWS
USENET news subsystem
LOG_SYSLOG
messages generated internally by
syslogd(8)
R LOG_USER (default)
generic user-level messages
LOG_UUCP
LOG_EMERG
system is unusable
LOG_ALERT
action must be taken immediately
LOG_CRIT
critical conditions
LOG_ERR
error conditions
LOG_WARNING
warning conditions
LOG_NOTICE
normal, but significant, condition
LOG_INFO
informational message
LOG_DEBUG
debug-level message
The function
setlogmask(3)
can be used to restrict logging to specified levels only.
CONFORMING TO
The functions
R openlog (),
R closelog (),
and
R syslog ()
(but not
R vsyslog ())
are specified in SUSv2 and POSIX.1-2001.
POSIX.1-2001 specifies only the
LOG_USER
and
R LOG_LOCAL*
values for
R facility .
However, with the exception of
R LOG_AUTHPRIV
and
R LOG_FTP ,
the other
facility
values appear on most Unix systems.
The
LOG_PERROR
value for
option
is not specified by POSIX.1-2001, but is available
in most versions of Unix.
NOTES
The parameter
ident
in the call of
R openlog ()
is probably stored as-is.
Thus, if the string it points to
is changed,
R syslog ()
may start prepending the changed string, and if the string
it points to ceases to exist, the results are undefined.
Most portable is to use a string constant.
Never pass a string with user-supplied data as a format,
the following instead:
syslog(priority, "%s", string);
