php - 更改PHP error_log行为可能吗?

标签 php apache logging error-handling error-logging

我想知道是否可以更改PHP的error_log()功能的默认行为,使其默认包含源行和原始行号。

我猜测这可能可以通过PHP ini设置或通过以某种特定方式配置apache来完成,尽管不是apache专家,但我不确定如何实现。

在我的默认环境中,在错误由PHP警告或通知合法产生的情况下,在日志中查找错误的来源通常不会造成太大的问题,因为它将自动报告行的起源...但是,由程序员手动调用PHP error_log()不会执行此操作,而且我也找不到将这种行为设为默认行为的方法。

我知道一般来说,您可以使用魔术常数手动实现行报告,如下所示:
error_log("Failed to login to MySQL ".__LINE__);
但是,对于是否有任何方法可以配置错误在日志中普遍报告的方式,或者是否有其他方法可以解决更改代码中的每个调用以包含魔术常数的任何其他问题,我感到好奇并乐于接受。

最佳答案

您可以使用set_error_handler函数定义自己的错误处理程序。只要它在PHP语言的范围内(包括打印发生错误的文件和行),就可以使用您喜欢的错误进行处理。在这种情况下,最常见的做法是将错误转换为ErrorException

您也可以使用xDebug之类的工具,在php.ini中激活该工具后,它们会以更易读的形式显示错误。

关于php - 更改PHP error_log行为可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19700885/

相关文章:

php - 根据 Mysql 和 PDO 中其他表的结果从表中选择行

apache - 为浏览器缓存启用 mod_expires

linux - 检查哪个脚本在/tmp 中创建文件

logging - 具有自定义名称的 Nlog 内部日志文件

api - 如何像 Wine 在 Linux 中一样记录 Windows 中的所有 API 调用?

php - 边框没有应用于整个 div?

php - cakephp中可选的belongsTo关系

php - 搜索 mySql 中的所有字段

java - 如何将 JCIFS 与 apache VFS 结合使用来访问 SMB URL?

java - 为什么像 java.net.InetAddress 这样的 Java 类不记录任何内容?