[PHP]エラーログ記録関数

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

前回の更新からかなりの時間が経ってしまいました。ということで、今回は私が普段使っているPHP自作関数の一つのエラーログ記録関数を紹介します。

概要としては、メール送信フォームや検索フォームなどでエラーが発生した際に、そのときに保持している情報をできるだけエラーログとして記録して、エラーの原因追及に利用しよう、というものです。

とりあえず、今の段階では、

  • 関数引数として受け取った連想配列
  • サーバー変数($_SERVER)に格納されたデータ

を記録できるようになっています。あとは、

  • $_POST変数
  • $_GET変数

なんかも自動で格納できるようにしたほうが便利かもしれません。今の段階では、関数呼び出し時の引数として渡さなければこれらの変数は記録されません。

error.php

  1. <?php
  2. # error.php
  3. # [概要]    エラーログ保存スクリプト
  4. # [用法]    PHPスクリプト内のエラー処理を行っている箇所で、この関数を実行してください。
  5. #           引数は省略可能ですが、ログに保存したいデータを連想配列で渡すことが可能です。
  6. #           エラーログの保存パスとエラーログの送信メール宛先は、このスクリプトの始めの
  7. #           部分を変えることにより可能です。
  8. # [作成]    2009-02-16 R Yamada(1987yama3@gmail.com)
  9. #
  10. define( _SEND_TO_MAIL, ”1987yama3+error@gmail.com” );
  11. define( _ERROR_LOG_PATH, ”" ); 
  12. define( _SEND_MAIL, ”1″ );      // メールを送信する
  13. #define( _SEND_MAIL, ”0″ );     // メールを送信しない
  14. function error_triger( $var=array(0=>0) ) {
  15.     ////////
  16.     // ファイルの保存パスを作成
  17.     // ファイル名は Ymd_His.txt となる
  18.     $datetime = date( ”Ymd_His” ); 
  19.     $filename = _ERROR_LOG_PATH.$datetime.”.txt”;
  20.     ////////
  21.     // エラーログ冒頭のログ取得日時
  22.     $string = date( ”Y/m/d H:i:s” ).”\n”;
  23.     $string .= ”\n”; 
  24.     ////////
  25.     // 引数として受け取った連想配列を記録
  26.     foreach( $var as $key => $value ) {
  27.         $string .= $key.”:\t”.$value.”\n”; 
  28.     }
  29.     $string .= ”\n”; 
  30.     ////////
  31.     // サーバー変数を記録
  32.     foreach( $_SERVER as $key => $value ) {
  33.         $string .= $key.”:\t”.$value.”\n”; 
  34.     }
  35.     ////////
  36.     // 保存用にファイルを開き、ログを書き込みファイルを閉じる
  37.     $fp = fopen($filename, ”w”); 
  38.     fwrite($fp, $string);
  39.     fclose($fp); 
  40.     ////////
  41.     // メールを送信する設定であれば、メールを送信する。
  42.     if( _SEND_MAIL == 1 ) {
  43.         $headers = ’From: error@mysite.com’ . ”\r\n” . ’Reply-To: error@mysite.com’ . ”\r\n” . ’X-Mailer: PHP/’ . phpversion();
  44.         $body = $string; 
  45.         mail( _SEND_TO_MAIL, ”エラーログ”, $body, $headers );
  46.     }
  47. }
  48. ?> 

関連記事

人気ブログランキングへ

[PR]

トラックバック

http://yamablo.com/2009/02/16-105241.php/trackback

コメント


Get Adobe Flash playerPlugin by wpburn.com wordpress themes