[ Bottom of Page | Previous Page | Next Page | Contents | Index |  Library Home |
Legal |
Search ]
Technical Reference: Base Operating System and Extensions, Volume 2
syslog, openlog, closelog, or setlogmask Subroutine
Purpose
        
Controls the system log.
Library
Standard C Library (libc.a)
Syntax
#include <syslog.h>
void openlog ( ID,   LogOption,   Facility) 
const char *ID; 
int LogOption, Facility;
void syslog ( Priority,  Value,... ) 
int Priority; 
const char *Value;
void closelog ( )
int setlogmask(  MaskPriority) 
int MaskPriority;
void bsdlog (Priority, Value,...) 
int Priority; 
const char *Value;
Description
Attention: Do not use the 
syslog, 
openlog,  
closelog, or
 setlogmask subroutine in a multithreaded  environment. See the multithread alternatives
in the  
syslog_r (
syslog_r, openlog_r, closelog_r, or setlogmask_r Subroutine), 
openlog_r,  
closelog_r, or
 setlogmask_r subroutine article.  The 
syslog subroutine
is not threadsafe; for threadsafe  programs the 
syslog_r subroutine should be used instead.
 
The syslog subroutine writes
messages onto the system log maintained by the  syslogd command.
Note
Messages passed to syslog that are longer
than 900 bytes may be truncated by syslogd before being
logged.
The message is similar to the printf fmt string, with the difference  that %m is replaced by the current error message obtained from the errno global variable. A trailing  new-line can be added to the message
if needed.
Messages are read by the syslogd command and written to the system console or
 log file, or forwarded to the syslogd command on the
appropriate host.
If special processing is required, the openlog subroutine can be used to  initialize the log file.
Messages are tagged with codes indicating the type
of Priority for each. A  Priority is encoded as a Facility, which describes the
part of the system generating the message,  and as a level, which indicates
the severity of the message.
If the syslog subroutine cannot
pass the message to the syslogd  command, it writes
the message on the /dev/console file, provided the LOG_CONS option is set.
The closelog subroutine closes
the log file.
The setlogmask subroutine uses
the bit mask in the MaskPriority  parameter to set
the new log priority mask and returns the previous mask.
The LOG_MASK and LOG_UPTO macros in the sys/syslog.h file are  used
to create the priority mask. Calls to the syslog subroutine
with a priority mask that does not allow  logging of that particular level
of message causes the subroutine to return without logging the message.
Parameters
| ID | Contains a string that is attached to the beginning of every message.
The Facility parameter  encodes a default facility
from the previous list to be assigned to messages that do not have an explicit
facility  encoded. | 
| LogOption | Specifies a bit field that indicates logging options. The values
of LogOption are: 
LOG_CONS  Sends messages to the console if unable to send them to the syslogd command. This option is  useful in daemon processes that have
no controlling terminal.
LOG_NDELAY  Opens the connection to the syslogd command
immediately, instead of when the first message is  logged. This option is
useful for programs that need to manage the order in which file descriptors
are  allocated.
LOG_NOWAIT  Logs messages to the console without waiting for forked children.
Use this option for processes that  enable notification of child termination
through SIGCHLD; otherwise, the syslog subroutine may  block, waiting for a child process whose exit status
has already been collected.
LOG_ODELAY  Delays opening until the syslog subroutine is
called.
LOG_PID  Logs the process ID with each message. This option is useful for identifying
daemons.
 | 
| Facility | Specifies which of the following values generated the message: 
LOG_AUTH  Indicates the security authorization system: the login command, the su command, and so  on.
LOG_DAEMON  Logs system daemons.
LOG_KERNLogs messages generated by the kernel. Kernel processes
should use the bsdlog routine to  generate syslog messages. The syntax of bsdlog is identical
to syslog. The bsdlog  messages
can only be created by kernel processes and must be of LOG_KERN priority. The syslog subroutine cannot log LOG_KERN facility messages. Instead it will log LOG_USER facility messages.
LOG_LPR  Logs the line printer spooling system.
LOG_LOCAL0 through LOG_LOCAL7  Reserved for local use.
LOG_MAIL  Logs the mail system.
LOG_NEWS  Logs the news subsystem.
LOG_UUCP  Logs the UUCP subsystem.
LOG_USER  Logs messages generated by user processes. This is the default facility
when none is specified.
 | 
| Priority | Specifies the part of the system generating the message, and as a
level, indicates the severity of the  message. The level of severity is selected
from the following list: 
LOG_ALERT  Indicates a condition that should be corrected immediately; for example,
a corrupted database.
LOG_CRIT  Indicates critical conditions; for example, hard device errors.
LOG_DEBUG  Displays messages containing information useful to debug a program.
LOG_EMERG  Indicates a panic condition reported to all users; system is unusable.
LOG_ERR  Indicated error conditions.
LOG_INFO  Indicates general information messages.
LOG_NOTICE  Indicates a condition requiring special handling, but not an error
condition.
LOG_WARNING  Logs warning messages.
 | 
| MaskPriority | Enables logging for the levels indicated by the bits in the mask
that are set and disabled where the  bits are not set. The default mask allows
all priorities to be logged. | 
| Value | Specifies the values given in the Value parameters
and follows the  the same syntax as the  printf subroutine Format parameter. | 
Examples
- To log an error message concerning a possible security breach,
such as the  following, enter: 
syslog (LOG_ALERT, "who:internal error 23");
  
- To initialize the log file, set the log priority mask, and
log an error message, enter: 
openlog ("ftpd", LOG_PID, LOG_DAEMON);
setlogmask (LOG_UPTO (LOG_ERR));
syslog (LOG_INFO); 
 
- To log an error message from the system, enter: 
syslog (LOG_INFO | LOG_LOCAL2, "foobar error: %m"); 
Related Information
The profil subroutine.
The prof command.
The syslogd  daemon.
_end, _etext, or edata identifiers.
Subroutines Overview 
in AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs.
   
[ Top of Page | Previous Page | Next Page | Contents | Index | Library Home |
Legal |
Search ]