繁体   English   中英

PHP中的集中错误报告

[英]Centralized error reporting in PHP

有没有办法在PHP中集中处理错误报告? 我希望通过电子邮件通知我的申请引发的所有错误。

在整个应用程序中实现此目的的最佳方法是什么?

谢谢

您可以使用set_error_handler以任何方式在运行时处理错误。

正如Kalium所提到的,你会想要使用set_error_handler ,但这只会让你成为一部分。 您还想捕获未捕获的异常。 为此,请使用set_exception_handler

我自己做的是让我的代码陷阱错误,并将这些错误转换为适合我可以在其他地方捕获的异常。 对于任何未捕获的内容,我使用默认的异常处理程序来记录和报告它们,并在必要时显示适当的错误。

有3种类型的错误:

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

  2. 错误或失败的查询或数据库连接导致的数据库错误。

  3. 逻辑错误,例如在应用程序的内部工作中出现问题时与服务器或数据库无关。 例如,如果您希望某个文件位于给定文件夹中,但事实并非如此。

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

对于数据库,我建议使用集中式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类可以将所有错误记录到日志文件中,通过电子邮件发送给您,甚至可以将移动设备上的短信/短信记录ErrorHandler 它还可用于将用户重定向到错误页面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM