Add syslog documentation.
This commit is contained in:
parent
cb16f9966d
commit
dbf8eb6edf
|
@ -94,3 +94,252 @@ The \ex{with-dot-lock} special form is equivalent syntactic sugar.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\section{Syslog facility}
|
||||||
|
\label{syslog-facility}
|
||||||
|
|
||||||
|
The procedures in this section provide access to the 4.2BSD syslog
|
||||||
|
facility present in most POSIX systems. The functionality is in a
|
||||||
|
structure called \ex{syslog}. There's an additional structure
|
||||||
|
\ex{syslog-channels} documented below. The scsh interface to
|
||||||
|
the syslog facility differs significantly from that of the Unix
|
||||||
|
library functionality in order to support multiple simultaneous
|
||||||
|
connections to the syslog facility.
|
||||||
|
|
||||||
|
Log messages carry a variety of parameters beside the text of the
|
||||||
|
message itself, namely a set of options controlling the output format
|
||||||
|
and destination, the facility identifying the class of programs the
|
||||||
|
message is coming from, an identifier specifying the conrete program,
|
||||||
|
and the level identifying the importance of the message. Moreover, a
|
||||||
|
log mask can prevent messages at certain levels to be actually sent to
|
||||||
|
the syslog daemon.
|
||||||
|
|
||||||
|
\subsection*{Log options}
|
||||||
|
|
||||||
|
A log option specifies details of the I/O behavior of the syslog
|
||||||
|
facility. A syslog option is an element of a finite type (see
|
||||||
|
the \scm~manual) constructed by the
|
||||||
|
\ex{syslog-option} macro. The syslog facility works with sets of
|
||||||
|
options which are represented as enum sets (see
|
||||||
|
the \scm~manual).
|
||||||
|
|
||||||
|
\dfn{syslog-option}{option-name}{option}{syntax}
|
||||||
|
|
||||||
|
\defun{syslog-option?}{x}{boolean}
|
||||||
|
|
||||||
|
\defun{make-syslog-options}{list}{options}
|
||||||
|
|
||||||
|
\dfn{syslog-options}{option-name \ldots}{options}{syntax}
|
||||||
|
|
||||||
|
\defun{syslog-options?}{x}{boolean}
|
||||||
|
|
||||||
|
\begin{desc}
|
||||||
|
\ex{Syslog-option} constructs a log option from the name of an
|
||||||
|
option. (The possible names are listed below.) \ex{Syslog-option?}
|
||||||
|
is a predicate for log options. Options are comparable using
|
||||||
|
\ex{eq?}. \ex{Make-syslog-options} constructs a set of options
|
||||||
|
from a list of options. \ex{Syslog-options} is a macro which
|
||||||
|
expands into an expression returning a set of options from names.
|
||||||
|
\ex{Syslog-options?} is a predicate for sets of options.
|
||||||
|
\end{desc}
|
||||||
|
%
|
||||||
|
Here is a list of possible names of syslog options:
|
||||||
|
|
||||||
|
\begin{description}
|
||||||
|
\item[\ex{console}]
|
||||||
|
If syslog cannot pass the message to syslogd it will attempt to
|
||||||
|
write the message to the console.
|
||||||
|
|
||||||
|
\item[\ex{delay}]
|
||||||
|
Delay opening the connection to syslogd immediately until the first
|
||||||
|
message is logged.
|
||||||
|
|
||||||
|
\item[\ex{no-delay}]
|
||||||
|
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.
|
||||||
|
|
||||||
|
\noindent\textbf{NOTA BENE:}
|
||||||
|
The \ex{delay} and \ex{no-delay} options are included for
|
||||||
|
completeness, but do not have the expected effect in the present
|
||||||
|
Scheme interface: Because the Scheme interface has to multiplex
|
||||||
|
multiple simultaneous connections to the syslog facility over a
|
||||||
|
single one, open and close operations on that facility happen at
|
||||||
|
unpredictable times.
|
||||||
|
|
||||||
|
\item[\ex{log-pid}]
|
||||||
|
Log the process id with each message: useful for identifying
|
||||||
|
instantiations of daemons.
|
||||||
|
\end{description}
|
||||||
|
|
||||||
|
\subsection*{Log facilities}
|
||||||
|
|
||||||
|
A log facility identifies the originator of a log message from a
|
||||||
|
finite set known to the system. Each originator is identified by a
|
||||||
|
name:
|
||||||
|
|
||||||
|
\dfn{syslog-facility}{facility-name}{facility}{syntax}
|
||||||
|
\defun{syslog-facility?}{x}{boolean}
|
||||||
|
|
||||||
|
\begin{desc}
|
||||||
|
\ex{Syslog-facility} is macro that expands into an expression
|
||||||
|
returning a facility for a given name. \ex{Syslog-facility?} is a
|
||||||
|
predicate for facilities. Facilities are comparable via \ex{eq?}.
|
||||||
|
\end{desc}
|
||||||
|
%
|
||||||
|
Here is a list of possible names of syslog facilities:
|
||||||
|
|
||||||
|
\begin{description}
|
||||||
|
\item[\ex{authorization}]
|
||||||
|
The authorization system: login, su, getty, etc.
|
||||||
|
|
||||||
|
\item[\ex{cron}]
|
||||||
|
The cron daemon.
|
||||||
|
|
||||||
|
\item[\ex{daemon}]
|
||||||
|
System daemons, such as routed, that are not provided for explicitly
|
||||||
|
by other facilities.
|
||||||
|
|
||||||
|
\item[\ex{kernel}]
|
||||||
|
Messages generated by the kernel.
|
||||||
|
|
||||||
|
\item[\ex{lpr}]
|
||||||
|
The line printer spooling system: lpr, lpc, lpd, etc.
|
||||||
|
|
||||||
|
\item[\ex{mail}]
|
||||||
|
The mail system.
|
||||||
|
|
||||||
|
\item[\ex{news}]
|
||||||
|
The network news system.
|
||||||
|
|
||||||
|
\item[\ex{user}]
|
||||||
|
Messages generated by random user processes.
|
||||||
|
|
||||||
|
\item[\ex{uucp}]
|
||||||
|
The uucp system.
|
||||||
|
|
||||||
|
\item[\ex{local0} \ex{local1} \ex{local2} \ex{local3} \ex{local4} \ex{local5} \ex{local6} \ex{local7}]
|
||||||
|
Reserved for local use.
|
||||||
|
\end{description}
|
||||||
|
|
||||||
|
\subsection*{Log levels}
|
||||||
|
|
||||||
|
A log level identifies the importance of a message from a fixed set
|
||||||
|
of possible levels.
|
||||||
|
|
||||||
|
\dfn{syslog-level}{level-name}{level}{syntax}
|
||||||
|
\defun{syslog-level?}{x}{boolean}
|
||||||
|
%
|
||||||
|
\begin{desc}
|
||||||
|
\ex{Syslog-level} is macro that expands into an expression returning
|
||||||
|
a facility for a given name. \ex{Syslog-level?} is a predicate for
|
||||||
|
facilities. Levels are comparable via \ex{eq?}.
|
||||||
|
\end{desc}
|
||||||
|
%
|
||||||
|
Here is a list of possible names of syslog levels:
|
||||||
|
|
||||||
|
\begin{description}
|
||||||
|
\item[\ex{emergency}]
|
||||||
|
A panic condition. This is normally broadcast to all users.
|
||||||
|
|
||||||
|
\item[\ex{alert}]
|
||||||
|
A condition that should be corrected immediately, such as a
|
||||||
|
corrupted system database.
|
||||||
|
|
||||||
|
\item[\ex{critical}]
|
||||||
|
Critical conditions, e.g., hard device errors.
|
||||||
|
|
||||||
|
\item[\ex{error}]
|
||||||
|
Errors.
|
||||||
|
|
||||||
|
\item[\ex{warning}]
|
||||||
|
Warning messages.
|
||||||
|
|
||||||
|
\item[\ex{notice}]
|
||||||
|
Conditions that are not error conditions, but should possibly be
|
||||||
|
handled specially.
|
||||||
|
|
||||||
|
\item[\ex{info}]
|
||||||
|
Informational messages.
|
||||||
|
|
||||||
|
\item[\ex{debug}]
|
||||||
|
Messages that contain information normally of use only when
|
||||||
|
debugging a program.
|
||||||
|
\end{description}
|
||||||
|
|
||||||
|
\subsection*{Log masks}
|
||||||
|
|
||||||
|
A log masks can mask out log messages at a set of levels. A log
|
||||||
|
mask is an enum set of log levels.
|
||||||
|
|
||||||
|
\defun{make-syslog-mask}{list}{mask}
|
||||||
|
\dfn{syslog-mask}{level-name \ldots}{mask}{syntax}
|
||||||
|
\defvar{syslog-mask-all}{mask}
|
||||||
|
\defun{syslog-mask-upto}{level}{mask}
|
||||||
|
\defun{syslog-mask?}{x}{boolean}
|
||||||
|
|
||||||
|
\begin{desc}
|
||||||
|
\ex{Make-syslog-mask} constructs a mask from a list of levels.
|
||||||
|
\ex{Syslog-mask} is a macro which constructs a mask from names of
|
||||||
|
levels. \ex{Syslog-mask-all} is a predefined log mask containing
|
||||||
|
all levels. \ex{Syslog-mask-upto} returns a mask consisting of all
|
||||||
|
levels up to and including a certain level, starting with
|
||||||
|
\ex{emergency}.
|
||||||
|
\end{desc}
|
||||||
|
|
||||||
|
\subsection*{Logging}
|
||||||
|
|
||||||
|
Scheme~48 dynamically maintains implicit connections to the syslog
|
||||||
|
facility specifying a current identifier, current options, a current
|
||||||
|
facility and a current log mask. This implicit connection is held in
|
||||||
|
a thread fluid (see
|
||||||
|
Section~\ref{sec:ps_interac}). Hence, every thread
|
||||||
|
maintains it own implicit connection to syslog. Note that the
|
||||||
|
connection is not implicitly preserved across a \ex{spawn}, but it
|
||||||
|
is preserved across a \ex{fork-thread}:
|
||||||
|
|
||||||
|
|
||||||
|
\defun{with-syslog-destination}{string options facility mask thunk}{value}
|
||||||
|
\defun{set-syslog-destination!}{string options facility mask}{undefined}
|
||||||
|
%
|
||||||
|
\begin{desc}
|
||||||
|
\ex{With-syslog-destination} dynamically binds parameters of the
|
||||||
|
implicit connection to the syslog facility and runs \var{thunk}
|
||||||
|
within those parameter bindings, returning what \var{thunk}
|
||||||
|
returns. Each of the parameters may be \ex{\#f} in which case the
|
||||||
|
previous values will be used. \ex{Set-syslog-destination!} sets the
|
||||||
|
parameters of the implicit connection of the current thread.
|
||||||
|
\end{desc}
|
||||||
|
|
||||||
|
\defun{syslog}{level message}{undefined}
|
||||||
|
\defun{syslog}{level message [string options syslog-facility]}{undefined}
|
||||||
|
%
|
||||||
|
\begin{desc}
|
||||||
|
\ex{Syslog} actually logs a message. Each of the parameters of the
|
||||||
|
implicit connection (except for the log mask) can be explicitly
|
||||||
|
specified as well for the current call to \ex{syslog}, overriding
|
||||||
|
the parameters of the channel. The parameters revert to their
|
||||||
|
original values after the call.
|
||||||
|
\end{desc}
|
||||||
|
|
||||||
|
\subsection*{Syslog channels}
|
||||||
|
%
|
||||||
|
The \ex{syslog-channels} structure allows direct manipulation of
|
||||||
|
syslog channels, the objects that represent connections to the syslog
|
||||||
|
facility. Note that it is
|
||||||
|
not necessary to explicitly open a syslog channel to do logging.
|
||||||
|
|
||||||
|
\defun{open-syslog-channel}{string options facility mask}{channel}
|
||||||
|
\defun{close-syslog-channel}{channel}{undefined}
|
||||||
|
\defun{syslog}{level message channel}{undefined}
|
||||||
|
%
|
||||||
|
\begin{desc}
|
||||||
|
\ex{Open-syslog-channel} and \ex{close-syslog-channel} create and
|
||||||
|
destroy a connection to the syslog facility, respectively. The
|
||||||
|
specified form of calling \ex{syslog} logs to the specified channel.
|
||||||
|
\end{desc}
|
||||||
|
|
||||||
|
%%% Local Variables:
|
||||||
|
%%% mode: latex
|
||||||
|
%%% TeX-master: "man"
|
||||||
|
%%% End:
|
||||||
|
|
Loading…
Reference in New Issue