PHPでのログ出力 まとめ

  • 160
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

フレームワークのロガーを追っていたら
基本的なPHPのログ出力方法についてわからなくなったので
基本に戻ろうと自分なりにまとめてみました。

環境

CentOS release 6.3 (Final)
Apache/2.2
PHP 5.3

php.iniの設定

webにHTMLとして表示する場合は
ログ出力レベルを指定し、ログ表示設定をONにします。

php.ini
error_reporting = E_ALL | E_STRICT
display_errors on

※商用などでは必ずOFF
ファイルに残すために、log_errorsを設定します。

log_errors = On

httpd.confの確認

php側で設定しない場合、phpのエラーログはサーバの設定に依存します。

httpd.confのErrorLogにて設定されています。

httpd.conf
ErrorLog logs/error_log

ServerRootの設定 + ErrorLogの設定 = ログ置き場ってことですね。

吐き出すファイルの設定

php.iniのerror_logにログの出力先を設定します。
ファイル名を記述する場合は、絶対パスで記載し、
webサーバのユーザが書き込める必要があります。
※相対パスでも書き込めますが、ドキュメントルートからになります。

error_log = /var/log/php/error.log

syslogを通して吐き出すこともできます

error_log = syslog

syslogを使用しているなら/etc/syslog.confの設定値にもよりますが、
デフォルトでは/var/log/messages に吐かれます。

※syslogを使用して、phpのエラーログを別ファイルで保存するためには
ファシリティuser、レベルinfoを指定します。

/etc/rsyslog.conf
user.info /var/log/php/error.log

設定適用のためリスタート

/etc/rc.d/init.d/rsyslog restart

syslogでやると結構楽ですね。
ただphp以外にuser.infoで吐かれるsyslogがあると混乱しそう。