ConFoo 2025

openlog

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

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

説明

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

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 を返します。

変更履歴

バージョン 説明
8.2.0 この関数は、常に true を返すようになりました。 これより前のバージョンでは、失敗時に false を返していました。

参考

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

add a note

User Contributed Notes 1 note

up
1
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