PHP - 记录堆栈跟踪警告?

qua*_*ano 17 php warnings error-log stack-trace

是否有可能记录堆栈跟踪的PHP警告?或者捕获一个警告和error_log()吗?

在我的错误日志中有一些代码会导致警告,但是在不知道堆栈跟踪的情况下,无法知道导致这些警告的原因.

AJ.*_*AJ. 13

有使用的例子set_error_handler()会同ErrorException完成这一点:

http://us3.php.net/manual/en/class.errorexception.php

您只需要在处理函数内部实现自定义日志记录功能.


更新:

请注意,这也适用于警告和许多其他错误类型.要获得完全兼容性,请参阅手册set_error_handler():

http://us2.php.net/set_error_handler


mpe*_*pen 8

只需在脚本的开头抛出它:

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

删除if您想要记录的所有内容,即使它被抑制。

  • 谢谢老兄,你为我节省了几分钟的调试时间,将来可能还会节省更多时间。 (2认同)