PostgreSQL 向け関数

DBアクセスエラー時にLOGを出力[errLog]


例1 
function errLog($func,$sql){
  $err_log=date('Y-m-d H:i:s')." *ERR* [".$_SERVER[REQUEST_URI]."]".$php_errormsg."\r\n ".$func.":getTable sql==> ".$sql."\r\n";
  error_log($err_log,3,"./log/php_err.log");
}

〜省略〜
$sql = "insert into test_table (kbn,word) values('01', 'テーブル未作成のためエラーになります')";
if(!pg_query($sql)) errLog("登録中!",$sql);
2006-08-23 08:36:56 *ERR* [/edu/exp/errLog1.php]
登録中!:getTable sql==>insert into test_table (kbn,word) values('01', 'テーブル未作成のためエラーになります')
※マルチバイト文字は出力エンコーディングにしたがって変換してください。
DBでエラーが発生した際、どのように対処してますか?php.iniでエラーメッセージを出力している場合には、 ある程度予測は付きますが、それでも、時々良くわからないエラーって出たりしません?
その場合、エラーになったSQLがどんなのだったかがわかれば結構対処しやすくなりますよね。
PHPの標準関数には、エラーが発生した際、任意のLOGを出力するerror_logがあります。
これを利用して、例1のerrLog関数を作ってみました。
第一パラメータの $func は、エラーが発生した場所を示すメッセージを設定します。
第二パラメータの $sqlには、テーブルアクセス時のSQL文を設定します。
pg_queryの返却値が FALSE の際、errLogが呼び出され、結果のとおりのメッセージが指定のファイルに 出力されます。(この場合はerror_log関数の第二パラメータの ./log/php_err.log に出力されます。) この際、 ./log/ ディレクトリは 777 php_err.log は 666 として属性を変更しておかないとエラーが発生して、 出力されません。
(2006年08月23日)
 

アンケートにお答えください。

1.この記事は役に立ちましたか?





2.この記事に対するコメント、ご希望などありましたらお願いします。

3.よろしければ送信ボタンを押してください。


PostgresqlTOPへ戻る