我想知道是否可以更改PHP的error_log()功能的默认行为,以包含默认的源和源行号。
我猜这可能是通过PHP ini设置或通过以某种特定方式配置apache来完成的,虽然不是apache guru但我不确定这是如何实现的。
在我的默认环境中,在日志中查找错误的来源通常不会造成错误由PHP警告或通知合法产生的问题,因为它会自动报告行所在的位置。 ..然而,程序员手动调用PHP error_log()不会这样做,我找不到使这种行为默认的方法。
我知道,一般来说,您可以使用魔术常量手动实现线路报告,如下所示:
error_log("Failed to login to MySQL ".__LINE__);
但是,我很好奇,并且对于是否有任何方法可以配置在日志或其他任何方面普遍报告错误的方式以改变代码中的每一个调用以包含魔术常量的建议。
答案 0 :(得分:1)
您可以使用set_error_handler函数定义自己的错误处理程序。这允许您处理任何您喜欢的错误,只要它在PHP语言的范围内(包括打印发生错误的文件和行)。在这种情况下,最常见的做法是将错误转换为ErrorException。
此外,您可以使用xDebug等工具,这些工具在php.ini中激活后,会以更易读的形式显示错误。