syslog, openlog, closelog, setlogmask - control system log

     #include <sys/syslog.h>
     #include <stdarg.h>

     void openlog(const char *ident, int logopt, int facility)
     void syslog(int priority, const char *message, ...)
     void vsyslog(int priority, const char *message, va_list parameters)
     void closelog(void)
     int setlogmask(int maskpri)

     Syslog arranges to write  message  onto  the  system  log  maintained  by
     syslogd(8).  The message is tagged with priority.  The message looks like
     a printf(3) string except that  %m  is  replaced  by  the  current  error
     message  (collected  from errno).  A trailing newline is added if needed.
     This message will be  read  by  syslogd(8)  and  written  to  the  system
     console,   log  files,  or  forwarded  to  syslogd  on  another  host  as

     Priorities are encoded as a facility and a level.  The facility describes
     the  part  of  the  system generating the message.  The level is selected
     from an ordered list:

     LOG_EMERG     A panic condition.   This  is  normally  broadcast  to  all

     LOG_ALERT     A condition that should be corrected immediately, such as a
                   corrupted system database.

     LOG_CRIT      Critical conditions, e.g., hard device errors.

     LOG_ERR       Errors.

     LOG_WARNING   Warning messages.

     LOG_NOTICE    Conditions  that  are  not  error  conditions,  but  should
                   possibly be handled specially.

     LOG_INFO      Informational messages.

     LOG_DEBUG     Messages that contain information normally of use only when
                   debugging a program.

     If syslog cannot pass the message to syslogd, it will  attempt  to  write
     the  message on /dev/log.  If that fails then the message will be written
     to /dev/console if the LOG_CONS option is set (see below).

     If special processing is needed, openlog can be called to initialize  the
     log  file.   The  parameter  ident is a string that is prepended to every
     message.  Logopt is a bit  field  indicating  logging  options.   Current
     values for logopt are:

     LOG_PID       log  the  process  id  with  each  message:    useful   for
                   identifying instantiations of daemons.

     LOG_CONS      Force writing messages to the console if unable to send  it
                   to syslogd.  This option is safe to use in daemon processes
                   that have no controlling terminal since  syslog  will  fork
                   before opening the console.

     LOG_NDELAY    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.

     LOG_NOWAIT    Don't wait for children  forked  to  log  messages  on  the
                   console.   This  option  should  be  used by processes that
                   enable notification of child termination  via  SIGCHLD,  as
                   syslog  may  otherwise block waiting for a child whose exit
                   status has already been collected.

     The facility parameter encodes a default facility to be assigned  to  all
     messages that do not have an explicit facility encoded:

     LOG_KERN      Messages  generated  by  the  kernel.   These   cannot   be
                   generated by any user processes.

     LOG_USER      Messages generated by random user processes.  This  is  the
                   default facility identifier if none is specified.

     LOG_MAIL      The mail system.

     LOG_DAEMON    System daemons, such as ftpd(8), inetd(8), etc.

     LOG_AUTH      The authorization system:  login(1), su(1), etc.

     LOG_LPR       The line printer spooling system:  lp(1), lpd(8), etc.

     LOG_LOCAL0    Reserved for local use.  Similarly for  LOG_LOCAL1  through

     Closelog can be used to close the log file.

     Setlogmask sets the log priority mask to maskpri and returns the previous
     mask.   Calls  to syslog with a priority not set in maskpri are rejected.
     The mask for an individual  priority  pri  is  calculated  by  the  macro
     LOG_MASK(pri);  the mask for all priorities up to and including toppri is
     given by the macro LOG_UPTO(toppri).  The default allows  all  priorities
     to be logged.

     syslog(LOG_ALERT, "who: internal error 23");

     openlog("ftpd", LOG_PID, LOG_DAEMON);
     syslog(LOG_INFO, "Connection from host %d", CallingHost);

     syslog(LOG_INFO|LOG_LOCAL2, "foobar error: %m");

     logger(1), syslogd(8).

     A call to syslog that generates a message of more  than  1024  characters
     within the vsprintf library routine can overrun syslog's buffer and cause
     a core dump.