PHP警告のスタックトレースをログに記録することは可能ですか? または、警告をキャッチして error_log() しますか?
エラー ログに警告の原因となっているコードがいくつかありますが、スタック トレースを知らずにこれらの警告の原因を知ることは不可能です。
PHP警告のスタックトレースをログに記録することは可能ですか? または、警告をキャッチして error_log() しますか?
エラー ログに警告の原因となっているコードがいくつかありますが、スタック トレースを知らずにこれらの警告の原因を知ることは不可能です。
これを行うためset_error_handler()
に と組み合わせて使用する例があります。ErrorException
https://php.net/manual/en/class.errorexception.php
カスタム ロギング機能をハンドラ関数内に実装するだけで済みます。
アップデート:
これは、警告やその他の多くのエラー タイプに対しても機能することに注意してください。完全な互換性については、次のマニュアルを参照してくださいset_error_handler()
。
これをスクリプトの最初に投げるだけです:
set_error_handler(function($severity, $message, $file, $line) {
if (error_reporting() & $severity) {
throw new ErrorException($message, 0, $severity, $file, $line);
}
});
抑制されている場合でも、すべてをログに記録する を削除しif
ます。
php.ini ファイルで xdebug を有効にしている場合、xdebug はログに記録されると思いますが、スタック トレースがあります (ローカル変数の表示などのボーナス機能があります)。ただし、本番環境にはお勧めしません。