error_log関数を使って実行ログを記録するphpの使い方まとめ
(2012-09-26 22:10:37)
転載▼
タグ:
php
ログ
デバッグ
error_log
access_log
カテゴリ: PHP-CI
実行環境: centos+apache+mysql
背景:
http アクセス ログは次の方法で参照できます。 Apache の access_log と error_log 。
それでは、php の実行ログをデバッグしたり記録したりする必要がある場合、どうすれば実現できるのでしょうか?
syslog() メソッド?
主にシステム ログの記録に使用されますが、あまり適していません。
fopen fput fclose?
はい、しかし操作は面倒です
error_log()?
これは、私がこれまでに見つけたネイティブ関数を使用する最良の方法です。
それでは、error_log メソッドを詳しく紹介します。
php マニュアルでは、次のように説明されています。
error_log() 関数は、サーバーのエラー ログ、ファイル、またはリモート ターゲットにエラーを送信します。
成功した場合は true を返し、そうでない場合は false を返します。
構文
error_log(error,type,destination,headers)
パラメータの説明
error 必須。ログに記録するエラー メッセージ。
と入力します (オプション)。エラーログのタイプを指定します。
可能なレコード タイプ:
0 - デフォルト。 php.ini ファイルの error_log 設定に応じて、エラーはサーバー ログ システムまたはファイルに送信されます。
1 - エラーは宛先パラメーターのアドレスに送信されます。このタイプのみが headers パラメータを使用します。
2 - PHP デバッグ接続経由でエラーを送信します。このオプションは PHP 3 でのみ使用できます。
3 - ファイルターゲット文字列に送信されたエラー。
宛先 オプション。エラーメッセージの送信先を指定します。このパラメータの値は、「type」パラメータの値によって異なります。
ヘッダー
オプション。 「タイプ」が 1 の場合にのみ使用されます。
From、Cc、Bcc などの追加ヘッダーを指定します。 CRLF (rn) で区切られます。
注: 電子メールを送信するときは、From ヘッダーを含める必要があります。これは、php.ini ファイルまたはこのパラメータを介して設定できます。
実装プロセスを示す例:
1 php ログを受信するファイルを centos に作成できます。
touch /usr/local/apache/logs/php_debug_log
chown daemon:daemon /usr/local/apache/logs/php_debug_log
2 php code:
$ok = error_log(date('Y-m-d H:i:s') . 'this is debug string',3,'/usr/local/apache/logs/php_debug_log');
3 Apache を通じて php プログラムを実行します。これは Linux シェルで表示できます。次のコマンドを使用してログ情報を記録します。
tail -f /usr/local/apache/logs/php_debug_log
4 Completed
php_debug_log ファイルの所有者とグループは、Apache 設定ファイル httpd で指定されたユーザーとグループである必要があることに注意してください。 .conf この場合にのみ、error_log() 関数はファイルにログを書き込む権限を持つことができます。
ただし、Apache の access_log および error_log ログ ファイルは、root アカウントを通じて開始される Apache プロセスによって書き込まれます。access_log および error_log の所有者とグループに対する要件はなく、すべてのログを書き込むことができます。
最後に、Xiaodong のサポートに感謝します。そのおかげで、これらを迅速にマスターすることができました。
PHP ログのより複雑なニーズがある場合は、他のサードパーティ ソフトウェアを使用して実装できます。