2012-11-22 67 views
0

嗯......我知道當網站正在生產並且錯誤報告已關閉時記錄錯誤是很好的。但是我應該怎麼記錄?我無法記錄所有錯誤,因此我應該選擇一些大多數錯誤 - 代碼中可能出現的地方,並通過一些消息調用該函數來記錄該錯誤。我應該使用try-catch來做到這一點嗎?這是否是最好的方法呢?如何和登錄PHP

+1

爲什麼你不能記錄所有的錯誤?你是否暗示其中有太多它會使日誌無法讀取?在這種情況下,您可能需要考慮修復代碼。 –

+0

更重要的是,爲什麼你的代碼產生這麼多的錯誤?保留error_reporting,並在生產中關閉display_errors,繼續記錄所有錯誤,但_FIX_在日誌中找到的錯誤! –

+0

我寧願記錄在生產中可能發生的錯誤,以便我可以記錄日誌文件並修復它們。將error_reporting和display_errors關閉?如何在錯誤報告開啓時關閉此功能? – user1615069

回答

5

你應該有錯誤嚴重的幾個級別,所有這些不同的處理:

  • 調試級別的消息都只是用於調試,例如非常冗長輸出大約發生的事情
  • 信息級別消息通知重要事件,一切都像「試圖聯繫網絡服務」
  • 通知是不尋常的,但值得關注的事件
  • 警告是需要加以糾正問題的信息,但不引起直接的問題
  • 錯誤應詳細記錄和監控
  • 嚴重錯誤是突發事件,應詳細記錄,並可能自動發送
  • 警報需要立即注意並應觸發自動短信通知
  • 緊急情況下可以自動取得國民警衛隊部署

您與所有這些不同類型的錯誤/事件點綴您的應用程序。應該記錄通知和記錄,應該詳細記錄錯誤和記錄(將系統狀態轉儲到單獨的文件中),並且對於嚴重錯誤,應該自動通知某人。

請參閱https://github.com/Seldaek/monolog以獲取幫助您做到這一點的好組件。

+0

+1國民警衛隊 –

+0

+1,因爲他們是什麼類型的錯誤級別的初學者很好的描述。我希望在學習的時候,我可以閱讀這本書。有點愚蠢的結束壽> VBAssassin

+0

+1,感謝您的描述。我學習PHP的時間越長,我越確信學習這是無限的。 – user1615069