【问题标题】:Exception is not logged automatically when custom exception handler (set_exception_handler) is used使用自定义异常处理程序 (set_exception_handler) 时不会自动记录异常
【发布时间】:2012-06-02 22:32:42
【问题描述】:

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

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

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

【问题讨论】:

标签: php


【解决方案1】:

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

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

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

是的,您可以为此使用error_logDocs 函数。 ExceptionDocs 应该包含消息以及文​​件名和行号。我手头没有任何代码,否则我已经添加/链接了它。

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

【讨论】:

  • 谢谢,我将使用 error_log() 函数。实际上,clentfort 提供了一个使用 error_log() 的示例的链接,但根据那里的评论,我认为它是一些用户功能:)
  • 是的,PHP 手册经常埋藏一些宝石,因此值得扫描和查看用户 cmets。您经常会在 SO 上找到比这里更好的信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-13
  • 2015-10-18
  • 2023-03-04
  • 1970-01-01
  • 2018-05-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多