2009-02-25 89 views
1

我正在寫一個錯誤日誌記錄集,它將記錄到文件,事件日誌等等。應該在這些類中執行哪些異常處理?例如,假設我有一個LogError方法,它從異常處理程序中調用,並寫入文件。如果發生錯誤,什麼被認爲是最好的事情?顯然,我應該儘可能使這些方法儘可能安全,但是總會出現問題。錯誤日誌記錄類中的最佳異常處理策略是什麼?

+0

我使用的.Net,如果是相關的,但我不知道這是真的。 – darasd 2009-02-25 11:13:51

回答

1

一般來說,我輸出到stderr在這種情況下,儘可能多的信息越好,在日誌代碼往往都錯誤/異常,原始日誌/錯誤/異常。這樣有可能再現問題或理解它。

如果再寫入到stderr失敗是放棄的時候 - 無論是忽略它,完全終止應用程序。

1

爲什麼不使用log4j/log4net/log4php/log4 *等現有日誌記錄機制?這些工具可能會將這些細節整理出來。

作爲一個側面說明,如果你運行你的代碼中的容器內(比如:Tomcat)的,即使你拋出的異常處理程序中的異常,容器會抓住它,並顯示它。就像Douglas Leeder說的那樣,你可以捕獲處理程序中的所有異常並將其傳遞給syserr。

+0

+1不要重新發明車輪。 – 2009-02-25 11:10:19

+0

是的,但是log4net輪有比我們需要更多的花裏胡哨的附加。在我的時間裏我寫了很多錯誤記錄器,而且他們總是很簡單,並且按照他們的要求做。這並不困難。 – darasd 2009-02-25 11:14:26

0

這取決於日誌記錄是爲了什麼,如果它的調試日誌記錄,我會吞下異常,並繼續,因爲我從來不希望應用程序在生產中會由於調試工具,在另一方面,如果我登錄到銀行應用程序的審計日誌我猜如果應用程序在沒有審計的情況下繼續工作,客戶將會感到不安。

+0

我是錯誤日誌記錄。 – darasd 2009-03-02 15:32:37

0

您可以將審覈和異常處理實施爲服務。應用程序級審計日誌需要有關每個業務事務的狀態數據。在業務或事務上下文中監視應用程序的能力要求服務中的監視接口發送消息,詳細說明特定於服務調用的事務狀態。這要求每個服務在業務交易中的關鍵步驟發送狀態消息。然後,您可以構建一個實時查看器,將狀態消息(基於消息的語義 - 例如事務ID)與複合應用程序內的服務相關聯。這提供了SLA管理,故障跟蹤和問題確定的業務事務的端到端視圖。

審計服務然後可以被實現爲狀態機,可消耗和基於在它的配置定義的標準記錄的消息。通用異常處理程序還可以使用審計服務來支持企業SOA中出現的問題的集中視圖 - 以支持基於異常的監視。在該解決方案的任何應 - 不發生條件儀器發送異常消息給exception handler.

相關問題