使用自定义异常处理程序(set_exception_handler)时,不会自动记录异常

时间:2012-06-02 22:32:42

标签: php

我想使用自定义异常处理程序(使用set_exception_handler()函数设置)来控制在发生未处理的异常时打印给用户的内容。

不幸的是,在这种情况下,异常没有记录到php错误日志中,我不想编写自己的日志记录代码,因为自动异常日志记录对我来说绝对没问题。

问题是:
如果执行自定义异常处理程序,是否有办法使PHP日志异常(默认情况下)?如果没有,有没有办法登录主php错误日志文件?

1 个答案:

答案 0 :(得分:2)

  

如果执行了自定义异常处理程序,是否有办法使PHP日志异常(默认情况下)?

不,不是来自PHP提供的内容(例如,在回调中返回FALSE)。

  

如果没有,有没有办法登录主php错误日志文件?

是的,您可以使用error_logDocs功能。 ExceptionDocs应包含消息以及文​​件名和行号。我手边没有任何代码,否则我已添加/链接它。

一个或多或少的脏技巧(但我不确定它是否保留原始文件名和行号)是创建一个始终保留在内存中的异常捕获对象。如果它捕获一个未捕获的异常,它将处理并存储它。在破坏的情况下(在过程结束时)它可以重新抛出它。然后PHP需要处理它并可能记录它。不过我会考虑实验。