私は一週間前ロガークラスを開発しました。私は解決していた問題があった。
Post all kinds of errors (E_PARSE,E_ERROR,E_NOTICE,E_WARRNING etc..) into log file using some format methods.
すなわち:
[xxxx-xx-xx xx:xx]
User id: 123
Widget id:321
Error:"The message from PHP"
Line:345
File:test.php
私はここで見つけるPHPにある2つのエラータイプであった
:
厳しい(E_ERROR、E_PARSEなど)
(E_WARRNING、E_NOTICE)
厳密で厳密ではない私はそれを自分で呼びましたが、それはPHPのドキュメントではありません。タイプ2のエラーはいくつかありますが、タイプ1のエラーは致命的です。 (私が見られるような)
私は上述のタイプの両方のためのエラーハンドラを使用する:
エラーハンドラ#1
//set 'shutdown_handler' function as strict error handler
register_shutdown_function(array($this, 'shutdown_handler'));
//what does the function look like
public function shutdown_handler()
{
// get last occured error
$e = error_get_last();
$this->LogErrors($e['message'], $e['type'], $e['file'], $e['line']);
}
エラーハンドラ#2
//set 'error_handler' function as not strict error's handler
set_error_handler(array($this, 'error_handler'));
//what does the function look like
public function error_handler($errno, $errstr, $errfile, $errline)
{
$this->LogErrors($errstr, $errno, $errfile, $errline);
}
それで、もし私は例えばスクリプトでタイプ2のエラー25、タイプ1のエラー1つで、これらのエラーはすべてログファイルに表示されます。
希望は私が参考にして明らかになった
そこで問題は、あなたが '出口を使用()'や 'スクリプトで')(死んだらあなたのロガーを起動する方法ですか? –
'fopen()'、 'fwrite()'、 'fclose()'ではなく、 'file_put_contents()'を考えることも考えられます。 – CD001
あなたが探しているのはSeanの答えです。 'register_shutdown_function'を実装することは、コードの多くを変更することなくあなたを助けるはずです。 –