2011-02-02 16 views
12

可能重複:
Where/what level should logging code go?
Debug Levels在每個日誌級別包含哪些信息?

有一個慣例,標準,或廣泛使用的指南,將與Java記錄幫助?具體而言,在每個級別包括什麼(詳細,調試,等等)而不是實際的日誌記錄機制。

在每個日誌級別有很多指導,但沒有一個是具體的;他們都是模糊的,這使得很難「遵循命令」。

任何提示將不勝感激。

+0

相關問題:[什麼時候發生異常?](http://stackoverflow.com/questions/2574709/what-to-log-when-an-exception-occurs) – 2011-02-02 11:58:47

+0

@佩特:這看起來像一個來自這兩者的不同問題,但與第二個更密切相關。 – 2011-02-02 12:29:23

回答

11

這是受到個人的解釋,但我是(爲了從最好的到coursest):

  • 跟蹤 - 的最好記錄水平。可用於記錄僅在真實調試場景中相關的特定信息,例如記錄每個數據庫訪問或每個HTTP調用等。
  • 調試 - 信息主要幫助您調試程序。例如,記錄每次配料常規清空其批處理或磁盤等
  • 信息創建一個新的文件 - 一般應用流,如「啓動程序」「連接到數據庫」「註冊...」。簡而言之,應該有助於觀察者理解應用程序在一般情況下所做的工作。
  • 警告 - 警告可以恢復的錯誤。如未能解析日期或使用不安全的例程。請注意,儘管我們應該遵循失敗的快速原則,並且不會隱藏例如使用警告消息的配置錯誤,儘管我們可能會提供默認值。
  • 錯誤 - 表示通常不可恢復的錯誤。如未能打開數據庫連接。
  • 致命/嚴重用於記錄應用程序無法恢復的錯誤,這可能會導致程序立即終止。

最後,由您來定義最適合您的是什麼。就我個人而言,我運行大多數生產系統,日誌級別爲Info,其中我主要關注應用程序主邏輯,當然還有所有警告/錯誤。

除了代碼混亂,沒有太多的日誌記錄。所有幫助您更好地重現或理解問題的日誌記錄都是良好的日誌記錄。在性能說明中,大多數日誌記錄系統(例如log4j)允許配置哪個級別實際附加到物理日誌,這是一件好事。如果發生異常,應該記錄什麼內容?

0

對於它的價值,我們使用以下日誌級別:

  • DEBUG級別的消息給予高度詳細和/或具體信息,只對跟蹤問題非常有用。
  • 信息消息提供有關係統正在執行的一般信息。 (例如處理文件X)
  • 警告消息警告用戶有關不理想的事情,但不應影響系統。 (例如配置X錯過了,使用默認值)
  • 錯誤消息通知用戶出了什麼問題,但系統應該能夠應付。 (例如,連接丟失,但會再次嘗試)
  • CRITICAL消息通知用戶何時發生不可恢復的錯誤。 (即我即將中止當前的任務或崩潰)

我認爲日誌級別最重要的是找出一個方案,記錄它,並堅持下去。儘管在程序之間進行日誌級別的一致性會很好,但只要您在定義日誌級別時使用了常識,用戶就可以容忍程序之間的一定程度的差異。

0

簡單的日誌如果你以後回來並需要閱讀日誌,yuo認爲這很重要。這當然意味着你的Object.toStrings現在需要很好並且可讀,而不是不可讀的垃圾堆。這也意味着你需要做明智的事情就像引用串等。

相關問題