19

PHP警告のスタックトレースをログに記録することは可能ですか? または、警告をキャッチして error_log() しますか?

エラー ログに警告の原因となっているコードがいくつかありますが、スタック トレースを知らずにこれらの警告の原因を知ることは不可能です。

4

4 に答える 4

15

これを行うためset_error_handler()に と組み合わせて使用​​する例があります。ErrorException

https://php.net/manual/en/class.errorexception.php

カスタム ロギング機能をハンドラ関数内に実装するだけで済みます。


アップデート:

これは、警告やその他の多くのエラー タイプに対しても機能することに注意してください。完全な互換性については、次のマニュアルを参照してくださいset_error_handler()

https://php.net/set_error_handler

于 2011-06-21T14:19:01.983 に答える
12

これをスクリプトの最初に投げるだけです:

set_error_handler(function($severity, $message, $file, $line) {
    if (error_reporting() & $severity) {
        throw new ErrorException($message, 0, $severity, $file, $line);
    }
});

抑制されている場合でも、すべてをログに記録する を削除しifます。

于 2016-06-14T21:16:20.263 に答える
1

php.ini ファイルで xdebug を有効にしている場合、xdebug はログに記録されると思いますが、スタック トレースがあります (ローカル変数の表示などのボーナス機能があります)。ただし、本番環境にはお勧めしません。

XDebug スタック トレース

于 2011-06-21T14:31:27.350 に答える