4.1 日誌級別列表
您編寫了程序,將其上傳到服務器,然後您立即開始有疑問:
- 如何確保
debug()
該方法在工作時不起作用production
? - 日誌中的信息太多,是否只留下錯誤信息?
- 如何查看應用程序某一部分的詳細日誌?
當然,日誌的創建者幾十年前就面臨過同樣的事情。我不會告訴你這個問題在C語言中是如何解決的,但是在Java語言中卻非常漂亮地解決了。
日誌在將信息寫入. 您可以通過設置日誌記錄級別非常快速地減少/增加日誌的詳細信息。下表描述了這些級別:
等級 | 筆記 | |
---|---|---|
1個 | 全部 | 記錄所有消息 |
2個 | 痕跡 | 調試時的小提示 |
3個 | 調試 | 對調試很重要的消息 |
4個 | 信息 | 簡單的消息 |
5個 | 警告 | 只寫致命、錯誤和警告 |
6個 | 錯誤 | 只寫錯誤和致命錯誤 |
7 | 致命的 | 只寫致命錯誤 |
8個 | 離開 | 不要將消息寫入日誌 |
這些級別在過濾消息時使用。如果您將日誌記錄級別設置為WARN
,那麼所有不重要的消息都WARN
將被丟棄:TRACE
、DEBUG
、INFO
。如果將過濾級別設置為FATAL
,則甚至ERROR
。
還有兩個嚴重級別用於過濾 - 這OFF
(丟棄所有消息)和ALL
- 寫入所有消息(不丟棄任何內容)。
4.2 日誌設置示例
讓我們看一個簡單的日誌設置示例。為此,我們需要 log4j.properties 文件,該文件可以放在資源文件夾中。讓我們向其中添加以下內容:
# Root logger option
log4j.rootLogger=WARN, stdout
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}
在第一行中,我們設置了日誌記錄級別 - WARN
。這意味著寫入帶有狀態的記錄器的消息DEBUG
將INFO
被忽略。
- 指定我們將使用什麼類型的 appender -
ConsoleAppender
- 指定我們將寫入日誌的位置 -
System.out
- 我們設置將控制記錄格式的類 -
PatternLayout
- 設置所有消息的錄音格式 - 日期和時間
4.3 常見的日誌記錄錯誤
還有一點很重要——日誌記錄中的常見錯誤。做某事的選項不多,但可以確定幾個常見的錯誤:
- 太多的記錄。您不應該記錄每一步,這在理論上可能很重要。有一個規則:日誌可以加載性能不超過 10%。否則會有性能問題。
- 將所有數據記錄到一個文件中。這將導致它在某些時候很難讀/寫,更不用說某些系統上有文件大小限制。
- 使用錯誤的日誌級別。每個級別的日誌記錄都有明確的界限,應該得到尊重。如果邊界模糊,您可以就使用哪個級別達成一致。
GO TO FULL VERSION