openlog

(PHP 4, PHP 5, PHP 7, PHP 8)

openlogOpen connection to system logger

说明

openlog ( string $prefix , int $flags , int $facility ) : bool

openlog() opens a connection to the system logger for a program.

The use of openlog() is optional. It will automatically be called by syslog() if necessary, in which case prefix will default to false.

参数

prefix

The string prefix is added to each message.

flags

The flags argument is used to indicate what logging options will be used when generating a log message.

openlog() Options
Constant Description
LOG_CONS if there is an error while sending data to the system logger, write directly to the system console
LOG_NDELAY open the connection to the logger immediately
LOG_ODELAY (default) delay opening the connection until the first message is logged
LOG_PERROR print log message also to standard error
LOG_PID include PID with each message
You can use one or more of these options. When using multiple options you need to OR them, i.e. to open the connection immediately, write to the console and include the PID in each message, you will use: LOG_CONS | LOG_NDELAY | LOG_PID

facility

The facility argument is used to specify what type of program is logging the message. This allows you to specify (in your machine's syslog configuration) how messages coming from different facilities will be handled.

openlog() Facilities
Constant Description
LOG_AUTH security/authorization messages (use LOG_AUTHPRIV instead in systems where that constant is defined)
LOG_AUTHPRIV security/authorization messages (private)
LOG_CRON clock daemon (cron and at)
LOG_DAEMON other system daemons
LOG_KERN kernel messages
LOG_LOCAL0 ... LOG_LOCAL7 reserved for local use, these are not available in Windows
LOG_LPR line printer subsystem
LOG_MAIL mail subsystem
LOG_NEWS USENET news subsystem
LOG_SYSLOG messages generated internally by syslogd
LOG_USER generic user-level messages
LOG_UUCP UUCP subsystem

Note:

LOG_USER is the only valid log type under Windows operating systems

返回值

成功时返回 true, 或者在失败时返回 false

参见

User Contributed Notes

sam dot wankaner at gmail dot com 20-Jan-2015 07:15
In second parameter int $option, PI means Process ID (PID).
That is the unique number given to that process. For eg [30326]
Nimja 30-Jul-2013 11:07
To those curious; switching between different facilities is NOT an issue. There is no apparent memory overhead (nor slowdown) by calling openlog multiple(12 * 10000) times.

Shown by this example:

<?php
$facilities
= array(
   
LOG_AUTH,
   
LOG_AUTHPRIV,
   
LOG_CRON,
   
LOG_DAEMON,
   
LOG_KERN,
   
LOG_LOCAL0,
   
LOG_LPR,
   
LOG_MAIL,
   
LOG_NEWS,
   
LOG_SYSLOG,
   
LOG_USER,
   
LOG_UUCP,
);

for (
$i = 0; $i < 10000; $i++) {
    foreach (
$facilities as $facility) {
       
openlog('test', LOG_PID, $facility);
       
syslog(LOG_ERR, "This is a test: " . memory_get_usage(true));
    }
}
?>