File: libc.info, Node: syslog; vsyslog, Next: closelog, Prev: openlog, Up: Submitting Syslog Messages 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, char *FORMAT, ...) `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. *Note 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, char *FORMAT, va_list arglist) This is functionally identical to `syslog', with the BSD style variable length argument.