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