在 E_USER_NOTICE 处记录日志时,使用 trigger_error 抑制堆栈跟踪


Suppress stacktrace with trigger_error when logging at E_USER_NOTICE

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

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

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

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

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

编辑:我不是要抑制错误消息。我正在尝试在开发中提供更多调试消息。诸如"请求附带以下参数","步骤1完成"等内容。这在生产中确实不是必需的。

如果您只想手动将自定义消息发送到错误日志中,则log_error()是您正在寻找的功能。

首先,抑制错误处理不是一个好主意 - 错误对应用程序性能有巨大影响 - 并且抑制错误报告并不能消除速度减慢。

PHP 中没有"trigger_log"。

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

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