簡體   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