【问题标题】:Best Practices for Live Website Error Management实时网站错误管理的最佳实践
【发布时间】:2010-12-07 13:08:09
【问题描述】:

我即将首次推出一个相当大的网站。我已经关闭了 php.ini 中的所有错误消息,并且错误消息现在记录到我服务器上的“error_log”文件中。

我的问题是,既然错误已记录到一个文件中,除了查看网站上何时/何地发生错误,网络开发人员有哪些最佳方法?

目前,最好的方法似乎是每天不断检查 error_log 文件,但这似乎不是最有效的解决方案。理想情况下,每次发生错误时我都会收到一封电子邮件(带有错误消息)。任何关于如何控制错误的建议将不胜感激!

额外信息
在共享服务器上运行 (HostMonster)
使用 PHP 编写的网站

【问题讨论】:

    标签: php exception-handling error-handling error-log


    【解决方案1】:

    PHP 中有两个主要函数可以帮助捕获错误和异常。我建议你看看他们:

    在我们公司,我们使用这些功能处理网站上发生的所有错误,定义我们自己的错误和异常处理方法。

    发生错误时,会向开发团队发送一封电子邮件。

    【讨论】:

    • 感谢 MaxiWheat。如果我要走这条路,那么在每个 PHP 脚本中我都需要包含我的自定义错误处理程序,对吧?
    • 是的,该自定义处理程序需要包含在每个脚本中。如果您不想打扰,可以在自动前置文件中使用它,更多信息在这里:php.net/manual/en/ini.core.php
    【解决方案2】:

    我以前工作的地方使用自定义扩展来处理错误日志记录。它基本上INSERT DELAY 将错误放入带有一些额外信息的数据库中。然后,编写了一个单独的管理工具,以便能够轻松地搜索、浏览、排序和手动修剪日志表。

    我建议您不要编写自定义扩展,而是使用set_error_handler 方法并直接写入数据库。如果数据库不可用,则写入文件作为备份。这比处理大文件和一次性格式要容易得多。

    如果您愿意,您也可以通过电子邮件发送每小时摘要,但我不建议您发送更多内容,否则您会讨厌自己。

    【讨论】:

    • 这里要注意的一点是 set_error_handler() 不能处理所有错误类型(来自 php.net):以下错误类型不能用用户定义的函数处理:E_ERROR、E_PARSE、E_CORE_ERROR 、E_CORE_WARNING、E_COMPILE_ERROR、E_COMPILE_WARNING 以及在调用 set_error_handler() 的文件中引发的大部分 E_STRICT。
    • 想要关于损坏的错误报告机制的错误报告有点自相矛盾,不是吗?
    【解决方案3】:

    如果过去 N 小时内没有电子邮件,您可以通过电子邮件向自己发送错误消息。

    【讨论】:

      【解决方案4】:

      如果您预计不会出现很多错误,那么“私人”RSS/ATOM 提要可能会运行良好……因此,如果您没有收到任何内容,您无需担心……但如果您开始收到“更新”你知道有问题。

      【讨论】:

        【解决方案5】:

        我不知道 Hostmonster 是如何处理日志轮换的,但通常你想监控你的 error_log 文件的 size。如果大小突然跳跃,那么您肯定需要检查一些东西,因此您会希望收到一封电子邮件,告诉您日志文件大小意外跳跃。

        除此之外,您可以在周末合并错误日志并通过电子邮件将它们发送给自己并在周末进行调试。如果错误每周只发生几次,那可能不是严重的问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-09-02
          • 1970-01-01
          • 1970-01-01
          • 2010-11-10
          • 2011-06-09
          • 2018-09-12
          • 2017-11-26
          相关资源
          最近更新 更多