openlog

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

openlogシステムのロガーへの接続をオープンする

説明

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

openlog() は、プログラムによるシステムロガーへの接続をオープンします。

openlog() の使用は必須ではありません。この関数は、 必要に応じて syslog() により自動的に呼び出されます。 この場合、prefix のデフォルト値は false となります。

パラメータ

prefix

文字列 prefix が、各メッセージに追加されます。

flags

flags 引数は、 ログメッセージの生成時に使用されるロギング用オプションを指定します。

openlog() のオプション
定数 説明
LOG_CONS システムロガーにデータが送信される間にエラーが発生した場合、 直接、システムコンソールに書き込まれます。
LOG_NDELAY 直ちにロガーへの接続をオープンします。
LOG_ODELAY (デフォルト) 最初のメッセージがロギングされるまで接続のオープンを遅延します。
LOG_PERROR 標準エラー出力にもログメッセージを出力します。
LOG_PID 各メッセージに PID も含めます。
これらのオプションを一つまたは複数設定することが可能です。 複数のオプションを使用する場合、その論理和を指定します。 つまり、直ちに接続をオープンし、コンソールに書き込み、 各メッセージに PID を含めるには、 LOG_CONS | LOG_NDELAY | LOG_PID とします。

facility

引数 facility には、 ロギングを行う際のメッセージ型を指定します。これにより、 (使用するシステムの syslog の設定に関して) 異なった facility を有するメッセージをどのように処理するかを指定できるようになります。

openlog() の機能
定数 説明
LOG_AUTH セキュリティ/認証用メッセージ (定数 LOG_AUTHPRIV が定義されているシステムでは、代わりにそれを使用してください)
LOG_AUTHPRIV セキュリティ/認証 メッセージ (プライベート)
LOG_CRON クロックデーモン (cron や at)
LOG_DAEMON 他のシステムデーモン
LOG_KERN カーネルメッセージ
LOG_LOCAL0 ... LOG_LOCAL7 ローカルでの使用のために確保されているもので、Windows では使用できません
LOG_LPR ラインプリンタサブシステム
LOG_MAIL メールサブシステム
LOG_NEWS USENET ニュース サブシステム
LOG_SYSLOG syslogd で内部的に生成されたメッセージ
LOG_USER 一般的なユーザーレベルのメッセージ
LOG_UUCP UUCP サブシステム

注意:

Windows 環境で使用できるのは LOG_USER だけです。

戻り値

成功した場合に true を、失敗した場合に false を返します。

参考

  • syslog() - システムログのメッセージを生成する
  • closelog() - システムログへの接続を閉じる

add a note add a note

User Contributed Notes 2 notes

up
2
sam dot wankaner at gmail dot com
9 years ago
In second parameter int $option, PI means Process ID (PID).
That is the unique number given to that process. For eg [30326]
up
0
Nimja
11 years ago
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));
    }
}
?>
To Top