[英]Centralized error reporting in PHP
有沒有辦法在PHP中集中處理錯誤報告? 我希望通過電子郵件通知我的申請引發的所有錯誤。
在整個應用程序中實現此目的的最佳方法是什么?
謝謝
您可以使用set_error_handler以任何方式在運行時處理錯誤。
正如Kalium所提到的,你會想要使用set_error_handler
,但這只會讓你成為一部分。 您還想捕獲未捕獲的異常。 為此,請使用set_exception_handler
。
我自己做的是讓我的代碼陷阱錯誤,並將這些錯誤轉換為適合我可以在其他地方捕獲的異常。 對於任何未捕獲的內容,我使用默認的異常處理程序來記錄和報告它們,並在必要時顯示適當的錯誤。
有3種類型的錯誤:
系統錯誤,例如PHP引發的警告或致命錯誤。 404錯誤也屬於此類別。
錯誤或失敗的查詢或數據庫連接導致的數據庫錯誤。
創建處理所有三種類型錯誤的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.