[PHP]エラーログ記録関数
Posted by yama3 2009年 02月 16日. プログラミング 
前回の更新からかなりの時間が経ってしまいました。ということで、今回は私が普段使っているPHP自作関数の一つのエラーログ記録関数を紹介します。
概要としては、メール送信フォームや検索フォームなどでエラーが発生した際に、そのときに保持している情報をできるだけエラーログとして記録して、エラーの原因追及に利用しよう、というものです。
とりあえず、今の段階では、
- 関数引数として受け取った連想配列
- サーバー変数($_SERVER)に格納されたデータ
を記録できるようになっています。あとは、
- $_POST変数
- $_GET変数
なんかも自動で格納できるようにしたほうが便利かもしれません。今の段階では、関数呼び出し時の引数として渡さなければこれらの変数は記録されません。
error.php
- <?php
- #
- # error.php
- #
- # [概要] エラーログ保存スクリプト
- # [用法] PHPスクリプト内のエラー処理を行っている箇所で、この関数を実行してください。
- # 引数は省略可能ですが、ログに保存したいデータを連想配列で渡すことが可能です。
- # エラーログの保存パスとエラーログの送信メール宛先は、このスクリプトの始めの
- # 部分を変えることにより可能です。
- # [作成] 2009-02-16 R Yamada(1987yama3@gmail.com)
- #
- define( _SEND_TO_MAIL, ”1987yama3+error@gmail.com” );
- define( _ERROR_LOG_PATH, ”" );
- define( _SEND_MAIL, ”1″ ); // メールを送信する
- #define( _SEND_MAIL, ”0″ ); // メールを送信しない
- function error_triger( $var=array(0=>0) ) {
- ////////
- // ファイルの保存パスを作成
- // ファイル名は Ymd_His.txt となる
- $datetime = date( ”Ymd_His” );
- $filename = _ERROR_LOG_PATH.$datetime.”.txt”;
- ////////
- // エラーログ冒頭のログ取得日時
- $string = date( ”Y/m/d H:i:s” ).”\n”;
- $string .= ”\n”;
- ////////
- // 引数として受け取った連想配列を記録
- foreach( $var as $key => $value ) {
- $string .= $key.”:\t”.$value.”\n”;
- }
- $string .= ”\n”;
- ////////
- // サーバー変数を記録
- foreach( $_SERVER as $key => $value ) {
- $string .= $key.”:\t”.$value.”\n”;
- }
- ////////
- // 保存用にファイルを開き、ログを書き込みファイルを閉じる
- $fp = fopen($filename, ”w”);
- fwrite($fp, $string);
- fclose($fp);
- ////////
- // メールを送信する設定であれば、メールを送信する。
- if( _SEND_MAIL == 1 ) {
- $headers = ’From: error@mysite.com’ . ”\r\n” . ’Reply-To: error@mysite.com’ . ”\r\n” . ’X-Mailer: PHP/’ . phpversion();
- $body = $string;
- mail( _SEND_TO_MAIL, ”エラーログ”, $body, $headers );
- }
- }
- ?>
関連記事
[PR]
トラックバック
http://yamablo.com/2009/02/16-105241.php/trackback

