phpでapacheのログにログを出す方法

 error_logでエラーログに出せばよい。
おわり。

...いやでもさ。まずいことがあった時に出力されるはずのエラーログに変数の値をprintfデバッグするのはどうなのさ? ファイルを分けたい時もあるでしょ?
そういう時は、apache_note関数とapacheのhttpd.confの記述を組み合わせる。

httpd.confに
<VirtualHost *:80>
    ServerName test1.example.com
    ServerAlias localtest1.example.com
    DocumentRoot /var/www/someapp/html/
    LogFormat "%h %l %u %t \"%r\" %>s %b %{phpdebug}n" phpdebug_log
    CustomLog /var/www/someapp/log/phpdebug_log phpdebug_log
    ErrorLog /var/www/someapp/log/error_log
    TransferLog /var/www/someapp/log/access_log
</VirtualHost>

 こんな具合にLogFormatとCustomLogを書いておく。

で、PHPの方では、
apache_note("phpdebug", "php debug message: {$_SERVER['REMOTE_ADDR']} ({$_SERVER['HTTP_USER_AGENT']})");

こんな感じでログを出す。

すると、CustomLogで書いたファイル名のファイルにログが出力される。

[daisuke@hige ~]$ sudo tail -f /var/www/someapp/log/phpdebug_log
192.168.11.128 - hoge [08/Jul/2008:09:13:33 +0900] "GET /graph/someapp.php HTTP/1.1" 200 4856 php debug message: 192.168.11.128 (Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15)
192.168.11.128 - hoge [08/Jul/2008:09:13:48 +0900] "GET /graph/someapp.php HTTP/1.1" 200 4856 php debug message: 192.168.11.128 (Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15)
192.168.11.128 - hoge [08/Jul/2008:09:16:37 +0900] "GET /graph/someapp.php HTTP/1.1" 200 4856 php debug message: 192.168.11.128 (Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15)

こうしておけば、apacheの通常のログと同様にログファイルを扱うことができるので、ログのローテーションとかパースに既存の仕組みを使うことができて嬉しい。

おまけ


 別のファイルに出すと、tailでログを監視するときerror_logと二つのウィンドウを開かないといけないじゃないかって?
tailはなんとファイル名を複数監視することができる。

[daisuke@hige ~]$ sudo tail -f /var/www/someapp/log/error_log /var/www/someapp/log/phpdebug_log
==> /var/www/someapp/log/error_log <==
[Tue Jul 08 08:43:04 2008] [error] [client 192.168.11.128] PHP Notice:  Undefined variable: access in /var/www/someapp/html/graph/someapp.php on line 7
[Tue Jul 08 09:13:41 2008] [error] [client 192.168.11.128] PHP Parse error:  syntax error, unexpected T_STRING in /var/www/someapp/html/graph/someapp.php on line 2

==> /var/www/someapp/log/phpdebug_log <==
192.168.11.128 - hoge [08/Jul/2008:09:13:33 +0900] "GET /graph/someapp.php HTTP/1.1" 200 4856 php debug message: 192.168.11.128 (Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15)
192.168.11.128 - hoge [08/Jul/2008:09:13:41 +0900] "GET /graph/someapp.php HTTP/1.1" 200 - -
192.168.11.128 - hoge [08/Jul/2008:09:13:48 +0900] "GET /graph/someapp.php HTTP/1.1" 200 4856 php debug message: 192.168.11.128 (Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15)
192.168.11.128 - hoge [08/Jul/2008:09:16:37 +0900] "GET /graph/someapp.php HTTP/1.1" 200 4856 php debug message: 192.168.11.128 (Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15)

カテゴリ:

トラックバック(0)

このブログ記事を参照しているブログ一覧: phpでapacheのログにログを出す方法

このブログ記事に対するトラックバックURL: http://mogya.com/mt/mt-tb.cgi/608

コメント(1)

もぎゃ Author Profile Page:

もっと普通のデバッグログの出し方が
http://labs.unoh.net/2007/05/php-logging-to-text-files.html
にあった。なんだ、あるんじゃん。

コメントする


画像の中に見える文字を入力してください。

このブログ記事について

このページは、 もぎゃが 2008年7月 8日 09:40に書いたブログ記事です。

ひとつ前のブログ記事は「 CentOS 5のRuby、はまり処 」です。

次のブログ記事は「 もくもく会をやってみた。 」です。

最近のコンテンツは インデックスページ で見られます。過去に書かれたものは アーカイブのページ で見られます。

Powered by
Movable Type