PHP的集中式错误报告

4

有没有一种方法可以集中处理 PHP 中的错误报告?我希望通过电子邮件收到应用程序抛出的所有错误的通知。

如何为整个应用程序实现此目标是最佳的方法?

谢谢

3个回答

8
您可以使用set_error_handler函数来处理运行时的错误,您可以按照自己的方式进行处理。

6
如Kalium所提到的,您需要使用set_error_handler,但这只是部分解决方案。您还需要捕获未处理的异常。为此,请使用set_exception_handler
我自己的做法是让我的代码捕获错误,并将这些错误转换为适当的异常,以便我可以在其他地方捕获它们。对于任何未被捕获的异常,我使用默认的异常处理程序来记录和报告它们,并在必要时显示适当的错误信息。

4

有三种类型的错误:

  1. 系统错误,例如PHP引发的警告或致命错误。404错误也属于此类。

  2. 由于查询或数据库连接格式不正确或失败而导致的数据库错误。

  3. 逻辑错误,例如应用程序内部工作出现问题,与服务器或数据库无关。例如,如果您期望某个文件在给定文件夹中,但实际上并不存在。

创建一个处理所有三种类型错误的 ErrorHandler 类是最好的方法。对于系统错误,您可以使用 set_error_handler 或阅读在线教程之一,例如 this one

对于数据库,我建议使用集中式的 Database 类来处理所有查询。可以使用以下内容:

$result=mysql_query($sql);
if (! $result)
{
   $ErrorHandler->dbError(mysql_error(), $sql);
}

对于逻辑错误,例如找不到预期文件或数据库记录的错误,您将调用相同的ErrorHandler类并执行以下操作:

if ($logicalError)
{
   $ErrorHandler->appError('Something bad happened',__LINE__, __FILE__);
   $ErrorHandler->showAppErrorPage();
}

这里的__FILE____LINE__常量将准确地给出错误发生的位置。请在php.net网站上了解它们。
您的ErrorHandler类可以将所有错误记录到日志文件中,通过电子邮件通知您,甚至可以通过手机短信/文本通知您。它还可以用于将用户重定向到错误页面。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接