文章目錄
- 介紹
- 日志級別的分類
- 日志級別的順序
- 日志級別的使用
介紹
日志級別代表著日志信息對應問題的嚴重性,為了更快的篩選符合目標的日志信息
試想一下這樣的場景,假設你是一家 2 萬人公司的老板,如果每個員工的日常工作和瑣碎的信息都要反饋給你,那你一定無暇顧及。于是就有了組織架構,而組織架構就會分級,有很多的級別設置,如下圖
有了組織架構之后,就可以逐級別匯報消息了,例如:組員匯報給組長,組長匯報給研發一組,研發一組匯報給 Java
研發,等等依次進行匯報
日志級別大概是同樣的道理,有了日志級別之后就可以過濾自己看到的信息了,比如只關注 Error
級別的,就可以根據級別過濾出相關日志信息,節約開發者的信息篩選時間
日志級別的分類
日志級別從到到底依次為:FATAL
、ERROR
、WARN
、INFO
、DEBUG
、TRACE
FATAL
:致命信息,表示需要立即被處理的系統級錯誤ERROR
:錯誤信息,級別較高的錯誤日志信息,但仍不影響系統的繼續運行WARN
:警告信息,不影響使用,但需要注意的問題INFO
:普通信息,用于記錄應用程序正常運行時的一些信息,例如系統啟動完成,請求處理完成等DEBUG
:調試信息,需要調試時候的關鍵嘻嘻打印TRACE
:追蹤信息,比DEBUG
更細粒度的信息事件(除非有特殊用意,否則請用DEBUG
級別替代)
日志級別通常和測試人員的
bug
級別沒有關系
- 日志級別是開發人員設置的,用來給開發人員看的。
- 日志級別的正確設置,也與開發人員的工作經驗有關。如果開發人員把
error
級別的日志設置成了INFO
,就很有可能會影響開發人員對項目運行情況的判斷- 出現
error
級別的日志信息較多時,可能也沒有任何問題。測試的bug
級別更多是依據現象和影響范圍來判斷
日志級別的順序
- 級別越高,收到的消息越少
日志級別的使用
日志級別是開發人員自己設置的。開發人員根據自己的理解來判斷該信息的重要程度
- 類似公司管理,通常由領導來判斷什么樣的事情需要匯報,什么樣的事情不需要匯報
針對這些級別,Logger
對象分別提供了對應的方法,來輸出日志
@RequestMapping("/printLog")
public String printLog(){ logger.trace("========trace========"); logger.debug("========debug========"); logger.info("========info========"); logger.warn("========warn========"); logger.error("========error========"); return "打印不同級別的日志";
}
SpringBoot
默認的日志框架是 Logback
,Logback
沒有 FATAL
級別,它被映射到 ERROR
- 出現
FATAL
日志,表示服務已經出現了某種程度的不可用,需要聯系系統管理員緊急介入處理 - 通常情況下,一個進程聲明周期中應該最多只有依次
FATAL
記錄
觀察打印的結果:
- 結果發現,只打印了
info
,warn
,error
級別的日志 - 這與日志級別的配置有關,日志的輸出級別默認是
info
級別,所以只會打印大于等于此級別的日志,也就是info
,warn
和error