Windows環境でのPHPのエラーログの出力について

システム部の中村です。

出社方法は自転車!! と心に誓ったのに6-7月の記録的な暑さで挫折して毎日地下鉄使って出社してる体たらくな男でございます。
まあ通勤時間はパズドラやったりして時間をつぶしてるんですが、電車って涼しくて便利ですよね。
さて話を戻し
社内ではプログラムを作るお仕事をしておりますが、Windows環境下でPHPのプログラムを作ってますと、エラーを出力したりする場合unix/linux環境でないWindowsではログが見にくくわかりにくい! Windowsにもtail -f なる ログファイルをリアルタイムで監視できるようなコマンドがないものかと・・・

探してみると
Windowsにもtail -f を実現するソフトが存在するんです!

Tail for Windows ( http://www.vector.co.jp/soft/winnt/util/se241763.html )
tail for windows

が有名みたいです。
これでApacheのエラーログにphpのエラーを出力させれば、リアルタイムなエラー状況がわかるので、JSONの出力コードなどで
画面出力にはエラーは出力できないけど今どういう風にコードが動いてるか知りたいとき、一発でわかるって寸法ですよ!!
ただ、自分はMicrosoft大好き人間なので
Windows Server 2003 Resource Kit Tools
( http://www.microsoft.com/en-us/download/details.aspx?id=17657 )
このResource Kit Tools内にあるコマンドプロンプトで動作する tail.exeを使用してました。

でもtail for windows 使い始めてしまうと
GUIの便利さに負けコマンド系のプログラム使わなくなってしまいました。
エラーログの話が出たついでに

phpでのエラーログの出力方法の覚書程度の物を書いて見ますね。

  $str= "Now Point is ABC";
  error_log($str);

これでエラーログには

  [01-Aug-2013 00:00:00 ] Now Point is ABC

な感じで書かれちゃいます。

ただこの error_log ってのは配列はうまく表示してくれません。
php.iniの設定によってはエラーでプログラムが止まってしまいます。
配列を表示させるには

  $array = array("apple","cherry", array("hello","world"));
  error_log(print_r($array,true));

この書き方なら配列もエラーログにしっかり記録されます。

  [01-Aug-2013 00:00:00 ] Array
  (
      [0] => apple
      [1] => cherry
      [2] => Array
        (
          [0] => hello
          [1] => world
        )
  )

場合によっては文字コードの問題で文字化けしてしまうかも知れないので、
文字コード変換を付け加えたものを関数化してしまうのもありかなと

さてお仕事に戻ろう そうしよう