\section{\module{syslog} ---
         \UNIX{} syslog library routines}

\declaremodule{builtin}{syslog}
  \platform{Unix}
\modulesynopsis{An interface to the \UNIX\ syslog library routines.}


This module provides an interface to the \UNIX{} \code{syslog} library
routines.  Refer to the \UNIX{} manual pages for a detailed description
of the \code{syslog} facility.

The module defines the following functions:


\begin{funcdesc}{syslog}{\optional{priority,} message}
Send the string \var{message} to the system logger.  A trailing
newline is added if necessary.  Each message is tagged with a priority
composed of a \var{facility} and a \var{level}.  The optional
\var{priority} argument, which defaults to \constant{LOG_INFO},
determines the message priority.  If the facility is not encoded in
\var{priority} using logical-or (\code{LOG_INFO | LOG_USER}), the
value given in the \function{openlog()} call is used.
\end{funcdesc}

\begin{funcdesc}{openlog}{ident\optional{, logopt\optional{, facility}}}
Logging options other than the defaults can be set by explicitly
opening the log file with \function{openlog()} prior to calling
\function{syslog()}.  The defaults are (usually) \var{ident} =
\code{'syslog'}, \var{logopt} = \code{0}, \var{facility} =
\constant{LOG_USER}.  The \var{ident} argument is a string which is
prepended to every message.  The optional \var{logopt} argument is a
bit field - see below for possible values to combine.  The optional
\var{facility} argument sets the default facility for messages which
do not have a facility explicitly encoded.
\end{funcdesc}

\begin{funcdesc}{closelog}{}
Close the log file.
\end{funcdesc}

\begin{funcdesc}{setlogmask}{maskpri}
Set the priority mask to \var{maskpri} and return the
previous mask value.  Calls to \function{syslog()} with a priority
level not set in \var{maskpri} are ignored.  The default is to log all
priorities.  The function \code{LOG_MASK(\var{pri})} calculates the
mask for the individual priority \var{pri}.  The function
\code{LOG_UPTO(\var{pri})} calculates the mask for all priorities up
to and including \var{pri}.
\end{funcdesc}


The module defines the following constants:

\begin{description}

\item[Priority levels (high to low):]

\constant{LOG_EMERG}, \constant{LOG_ALERT}, \constant{LOG_CRIT},
\constant{LOG_ERR}, \constant{LOG_WARNING}, \constant{LOG_NOTICE},
\constant{LOG_INFO}, \constant{LOG_DEBUG}.

\item[Facilities:]

\constant{LOG_KERN}, \constant{LOG_USER}, \constant{LOG_MAIL},
\constant{LOG_DAEMON}, \constant{LOG_AUTH}, \constant{LOG_LPR},
\constant{LOG_NEWS}, \constant{LOG_UUCP}, \constant{LOG_CRON} and
\constant{LOG_LOCAL0} to \constant{LOG_LOCAL7}.

\item[Log options:]

\constant{LOG_PID}, \constant{LOG_CONS}, \constant{LOG_NDELAY},
\constant{LOG_NOWAIT} and \constant{LOG_PERROR} if defined in
\code{<syslog.h>}.

\end{description}
