在E_USER_NOTICE中记录时,使用trigger_error抑制stacktrace

时间:2013-09-13 12:18:29

标签: php apache logging

我想在apache错误日志中记录我的php应用程序中的一些消息。但我希望这只发生在非生产环境中。

我发现php有error_log将消息记录到错误日志文件中,但是如果我的应用程序在非prod环境中运行,如何控制它只记录。

另外,我发现trigger_error有一个error type参数。然后,php.ini中的error_reporting设置可以决定实际记录哪些错误类型。因此,在dev中,我将error_reporting设置为E_ALL,它在生产中受到更多限制。所以,现在我可以使用trigger_log并始终登录E_USER_NOTICE。这意味着我的消息仅显示在开发日志文件中,而不显示在生产日志文件中。

但是,trigger_error还会生成每个日志的堆栈跟踪,这对我来说有点不必要。如何禁用此堆栈跟踪。

另外,我是以正确的方式做事。人们通常如何处理这个问题。

编辑: 我不是要压制错误消息。我想在dev 中提供更多 debug 消息。诸如“请求带有以下参数”,“步骤1完成”等等。生产中实际上不需要这样做。

2 个答案:

答案 0 :(得分:0)

首先,抑制错误处理不是一个好主意 - 错误会对您的应用程序性能产生巨大影响 - 并且抑制错误报告并不能消除速度下降。

PHP中没有'trigger_log'。

PHP中的构建错误处理不会生成堆栈跟踪 - 您必须安装自定义错误处理程序。如果你想改变它的行为,你需要找到它并修改代码。

使用'trigger_error'来记录调试事件是一个非常糟糕的主意。

答案 1 :(得分:0)

如果您只想将自定义消息发送到错误日志手动log_error()就是您要查找的功能。