18.2.2 syslog, vsyslog

The symbols referred to in this section are declared in the file syslog.h.

Function: void syslog (int facility_priority, const char *format, …)

Preliminary: | MT-Safe env locale | AS-Unsafe corrupt heap lock dlopen | AC-Unsafe corrupt lock mem fd | See POSIX Safety Concepts.

syslog submits a message to the Syslog facility. It does this by writing to the Unix domain socket /dev/log.

syslog submits the message with the facility and priority indicated by facility_priority. The macro LOG_MAKEPRI generates a facility/priority from a facility and a priority, as in the following example:

LOG_MAKEPRI(LOG_USER, LOG_WARNING)

The possible values for the facility code are (macros):

LOG_USER

A miscellaneous user process

LOG_MAIL

Mail

LOG_DAEMON

A miscellaneous system daemon

LOG_AUTH

Security (authorization)

LOG_SYSLOG

Syslog

LOG_LPR

Central printer

LOG_NEWS

Network news (e.g. Usenet)

LOG_UUCP

UUCP

LOG_CRON

Cron and At

LOG_AUTHPRIV

Private security (authorization)

LOG_FTP

Ftp server

LOG_LOCAL0

Locally defined

LOG_LOCAL1

Locally defined

LOG_LOCAL2

Locally defined

LOG_LOCAL3

Locally defined

LOG_LOCAL4

Locally defined

LOG_LOCAL5

Locally defined

LOG_LOCAL6

Locally defined

LOG_LOCAL7

Locally defined

Results are undefined if the facility code is anything else.

NB: syslog recognizes one other facility code: that of the kernel. But you can’t specify that facility code with these functions. If you try, it looks the same to syslog as if you are requesting the default facility. But you wouldn’t want to anyway, because any program that uses the GNU C Library is not the kernel.

You can use just a priority code as facility_priority. In that case, syslog assumes the default facility established when the Syslog connection was opened. See Syslog Example.

The possible values for the priority code are (macros):

LOG_EMERG

The message says the system is unusable.

LOG_ALERT

Action on the message must be taken immediately.

LOG_CRIT

The message states a critical condition.

LOG_ERR

The message describes an error.

LOG_WARNING

The message is a warning.

LOG_NOTICE

The message describes a normal but important event.

LOG_INFO

The message is purely informational.

LOG_DEBUG

The message is only for debugging purposes.

Results are undefined if the priority code is anything else.

If the process does not presently have a Syslog connection open (i.e., it did not call openlog), syslog implicitly opens the connection the same as openlog would, with the following defaults for information that would otherwise be included in an openlog call: The default identification string is the program name. The default default facility is LOG_USER. The default for all the connection options in options is as if those bits were off. syslog leaves the Syslog connection open.

If the /dev/log socket is not open and connected, syslog opens and connects it, the same as openlog with the LOG_NDELAY option would.

syslog leaves /dev/log open and connected unless its attempt to send the message failed, in which case syslog closes it (with the hope that a future implicit open will restore the Syslog connection to a usable state).

Example:


#include <syslog.h>
syslog (LOG_MAKEPRI(LOG_LOCAL1, LOG_ERROR),
        "Unable to make network connection to %s.  Error=%m", host);

Function: void vsyslog (int facility_priority, const char *format, va_list arglist)

Preliminary: | MT-Safe env locale | AS-Unsafe corrupt heap lock dlopen | AC-Unsafe corrupt lock mem fd | See POSIX Safety Concepts.

This is functionally identical to syslog, with the BSD style variable length argument.