:mod:`syslog` --- Unix syslog library routines
==============================================

.. module:: syslog
   :platform: Unix
   :synopsis: An interface to the Unix syslog library routines.


This module provides an interface to the Unix ``syslog`` library routines.
Refer to the Unix manual pages for a detailed description of the ``syslog``
facility.

This module wraps the system ``syslog`` module.  A pure Python
library that can speak to a syslog server is available in
the :mod:`logging.handlers` module as :class:`SysLogHandler`.

The module defines the following functions:


.. function:: syslog([priority,] message)

   Send the string *message* to the system logger.  A trailing newline is
   added if necessary.  Each message is tagged with a priority composed
   of a *facility* and a *level*.  The optional *priority* argument, which
   defaults to :const:`LOG_INFO`, determines the message priority.  If the
   facility is not encoded in *priority* using logical-or (``LOG_INFO |
   LOG_USER``), the value given in the :func:`openlog` call is used.

   If :func:`openlog` has not been called prior to the call to
   :func:'syslog', ``openlog()`` will be called with no arguments.


.. function:: openlog([ident[, logopt[, facility]]])

   Logging options of subsequent :func:`syslog` calls can be set by
   calling :func:`openlog`.  :func:`syslog` will call :func:`openlog`
   with no arguments if the log is not currently open.

   The optional *ident* keyword argument is a string which is prepended
   to every message, and defaults to ''sys.argv[0]'' with leading
   path components stripped.  The optional *logopt* keyword argument
   (default=0) is a bit field - see below for possible values to combine.
   The optional *facility* keyword argument (default=:const:`LOG_USER`)
   sets the default facility for messages which do not have a facility
   explicitly encoded.

   .. versionchanged::3.2
      In previous versions, keyword arguments were not allowed, and *ident*
      was required.  The default for *ident* was dependent on the system
      libraries, and often was ''python'' instead of the name of the
      python program file.


.. function:: closelog()

   Reset the syslog module values and call the system library
   ''closelog()''.

   This causes the module to behave as it does when initially imported.
   For example, :func:'openlog' will be called on the first :func:'syslog'
   call (if :func:'openlog' hasn't already been called), and *ident*
   and other :func:'openlog' parameters are reset to defaults.


.. function:: setlogmask(maskpri)

   Set the priority mask to *maskpri* and return the previous mask value.
   Calls to :func:`syslog` with a priority level not set in *maskpri*
   are ignored.  The default is to log all priorities.  The function
   ``LOG_MASK(pri)`` calculates the mask for the individual priority
   *pri*.  The function ``LOG_UPTO(pri)`` calculates the mask for all
   priorities up to and including *pri*.

The module defines the following constants:

Priority levels (high to low):
   :const:`LOG_EMERG`, :const:`LOG_ALERT`, :const:`LOG_CRIT`, :const:`LOG_ERR`,
   :const:`LOG_WARNING`, :const:`LOG_NOTICE`, :const:`LOG_INFO`,
   :const:`LOG_DEBUG`.

Facilities:
   :const:`LOG_KERN`, :const:`LOG_USER`, :const:`LOG_MAIL`, :const:`LOG_DAEMON`,
   :const:`LOG_AUTH`, :const:`LOG_LPR`, :const:`LOG_NEWS`, :const:`LOG_UUCP`,
   :const:`LOG_CRON` and :const:`LOG_LOCAL0` to :const:`LOG_LOCAL7`.

Log options:
   :const:`LOG_PID`, :const:`LOG_CONS`, :const:`LOG_NDELAY`, :const:`LOG_NOWAIT`
   and :const:`LOG_PERROR` if defined in ``<syslog.h>``.


Examples
--------

Simple example
~~~~~~~~~~~~~~

A simple set of examples::

   import syslog

   syslog.syslog('Processing started')
   if error:
      syslog.syslog(syslog.LOG_ERR, 'Processing started')

An example of setting some log options, these would include the process ID
in logged messages, and write the messages to the destination facility
used for mail logging::

   syslog.openlog(logopt=syslog.LOG_PID, facility=syslog.LOG_MAIL)
   syslog.syslog('E-mail processing initiated...')
