syslog, openlog, closelog, setlogmask - control system log
void openlog(ident, logopt,
const char *ident;
int logopt, facility;
void syslog(priority, message,
parameters ... )
const char *message;
vsyslog(priority, message, args)
Syslog arranges to write message onto the system log maintained by
syslogd(8). The message is tagged with priority. The message
looks like a printf(3) string except that %m is replaced by the
current error message (collected from errno). A trailing newline
is added if needed. This message will be read by syslogd(8) and
written to the system console, log files, or forwarded to syslogd
on another host as appropriate. An alternate form, in which the
arguments have already been captured using the variable-length
argument facilities of varargs(3), is available under the name
Priorities are encoded as a
facility and a level. The facility
describes the part of the system generating the message. The level
is selected from an ordered list:
LOG_EMERG A panic condition.
This is normally broadcast to all
LOG_ALERT A condition that
should be corrected immediately,
such as a corrupted system database.
LOG_CRIT Critical conditions, e.g., hard device 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.
If syslog cannot pass the
message to syslogd, it will attempt 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. The parameter ident is a string that is
prepended to every message. Logopt is a bit field indicating
logging options. Current 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
since syslog will fork before opening the console.
LOG_NDELAY Open the connection
to syslogd immediately. Normally
the open is delayed until the first message is
logged. Useful for programs that need to manage the
order in which file descriptors are allocated.
LOG_NOWAIT Don’t wait for
children forked to log messages on the
console. This option should be used by processes
that enable notification of child termination via
SIGCHLD, as syslog may otherwise block waiting for a
child whose exit status has already been collected.
The facility parameter encodes a
default facility to be assigned to
all messages that do not have an 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 ftpd(8), routed(8), etc.
LOG_AUTH The authorization
system: login(1), su(1), getty(8),
LOG_SYSLOG Messages generated internally by syslog.
LOG_LPR The line printer
spooling system: lpr(1), lpc(8),
LOG_NEWS Reserved for the USENET network news system.
LOG_UUCP Reserved for the UUCP system.
LOG_LOCAL0 Reserved for local
use. Similarly for LOG_LOCAL1
Closelog can be used to close 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.
syslog(LOG_ALERT, "who: internal error 23");
syslog(LOG_INFO, "Connection from host %d", CallingHost);
syslog(LOG_INFO|LOG_LOCAL2, "foobar error: %m");