2008-10-09 113 views
46

日誌級別WARN,ERROR和FATAL非常清晰。但是什麼時候是DEBUG和INFO?如何確定要使用的日誌級別?

我已經看到一些在INFO級別上煩人地冗長的項目,但我也看到了過多支持DEBUG級別的代碼。在這兩種情況下,有用的信息都隱藏在噪音中。

確定日誌級別的標準是什麼?

回答

89

我不認爲有任何硬性規定;使用log4j的型水平,我的「經驗法則」是這樣的:

  • FATAL:應用(或至少是一個線程)即將可怕的死亡。這是信息解釋爲什麼這是發生的地方。
  • 錯誤:應用程序正在做的事情,它不應該。這不是用戶錯誤('無效的搜索查詢');這是一個斷言失敗,網絡問題等,等等,可能是一個將中止當前操作
  • 警告:有關的事情,但不會導致操作中止;數據庫池中的連接數越來越少,操作中出現異常但預期的超時等。我經常認爲'WARN'是聚合中有用的東西;例如grep的,組,並計算他們得到了什麼影響系統運行狀況的圖片
  • 信息:普通的日誌記錄是這樣的應用程序的正常操作的一部分;診斷性內容,以便您可以回頭說'這種廣泛的操作發生的頻率?',或'用戶的數據如何進入這種狀態?'
  • DEBUG:默認爲關,能用於調試特定意想不到的問題被開啓。您可以在這裏記錄關於關鍵方法參數或其他信息的詳細信息,這些信息對於在代碼的特定「有問題」的領域找到可能的問題很有用。
  • TRACE:「說真的,跆拳道是怎麼回事我需要登錄的每一句話我執行我發瘋之前找到這個@#$ @荷蘭國際集團的內存中斷錯誤?!?!」

不是一成不變的,而是對我如何看待它的粗略想法。

5

想想誰需要使用每個級別。 在我的代碼中,我保留DEBUG保留給開發人員輸出,例如,輸出只會幫助開發者。 VERBOSE用於需要大量信息的普通用戶。 信息我用來正常顯示重大事件(例如發送網頁,檢查重要的事情)。

失敗WARN是很自我解釋。

+0

我想很多INFO或WARN只會幫助開發者 – Casebash 2010-05-14 03:12:42

7

非正式我用這種層次,

  • DEBUG - 實際跟蹤值
  • 信息 - 這是剛剛發生了 - 什麼都不重要,只是一個標誌
  • WARN - 一切的工作,但一些」不是個牛逼很是預期
  • 錯誤 - 出事了,將需要修復,但我們可以繼續做其他(獨立的)活動
  • FATAL - 相當嚴重的PROBL我們甚至不應該繼續進行

我一般會發布與信息被記錄,但只有當我知道日誌文件實際審查(和大小不是問題),否則它是警告。

3

如果在郵件中計算了某些內容,則我的團隊中使用debug,而info用於純文本。所以實際上info會告訴你發生了什麼,debug將顯示正在發生的事情的值。

1

我往往針對對用戶信息給他們,甚至沒有警告消息。 DEBUG往往是開發人員使用的地方,我輸出消息來幫助跟蹤代碼中的流量(還有變量的值)。

我也喜歡DEBUG的另一個層面(DEBUG2?),它給出了調試信息絕對bucketloads如所有緩衝區的十六進制轉儲等。

0

不需要DEBUG2級別。這就是'TRACE'的用途。 TRACE旨在成爲絕對最低級別的日誌記錄,輸出您可能想要查看的所有可能的信息。

避免信息氾濫,所以一般不建議啓用整個項目跟蹤級別的日誌。而是使用'DEBUG'來查找有關該錯誤的一般信息以及它發生的位置(因此名稱),然後僅在該組件上啓用TRACE時,如果仍然無法解決該問題。