log4j 、logback 以及slf4j三者之間的關係

在項目的開發中因爲對於log4j、logback以及slf4j之間的關係和相關的知識不能清晰掌握,在業餘時間進行記錄。java

一、三者之間的關係

 1)web

  簡答的講就是slf4j是一系列的日誌接口,而log4j logback是具體實現了的日誌框架apache

  由於是接口,因此在項目中若是你不引用log4j 、logback或者其它日誌框架你會發現,因爲沒有給出具體的logger實現,api

  控制檯是不可以正常的輸出日誌信息。也就是說咱們在具體開發中,須要綁定一個日誌框架,才能正常的使用slf4j。app

 2)  框架

   log4j和logback就是兩個受歡迎的日誌框架。但二者又有不一樣:spa

   log4j是apache實現的一個開源日誌組件。包的實現(Wrapped implementations)設計

   logback一樣是由log4j的做者設計完成的,擁有更好的特性,用來取代log4j的一個日誌框架。是slf4j的原生實現。(Native implementations)調試

    log4j配置文件須要web.xml文件完成加載,logback.xml文件無需,只要放在資源根路徑下就好。日誌

  3)總結:

  slf4j是java的一個日誌門面,實現了日誌框架一些通用的api,log4j和logback是具體的日誌框架,他們能夠單獨的使用,也能夠綁定slf4j一塊兒使      用。

  單獨使用:分別調用框架本身的方法來輸出日誌信息。

  綁定slf4j一塊兒使用:調用slf4j的api來輸入日誌信息,具體使用與底層日誌框架無關(須要底層框架的配置文件)

 

  顯然這裏咱們不推薦單獨使用日誌框架。假設項目中已經使用了log4j,而咱們此時加載了一個類庫,而這個類庫依賴另外一個日誌框架。這個時候咱們就須要維護兩個日誌框架,這是一個很是麻煩的事情。而使用了slf4j就不一樣了,因爲應用調用的抽象層的api,與底層日誌框架是無關的,所以能夠任意更換日誌框架。

 

二、日誌級別

log4j提供了4種日誌級別和2種日誌開關。logback與其同樣,logback的日誌級別定義在ch.qos.logback.classic.Level類中。
log4j官方網址: http://logging.apache.org/log4j/1.2/

4種級別:

DEBUG:輸出調試信息;指出細粒度信息事件對調試應用程序是很是有幫助的。 
INFO: 輸出提示信息;消息在粗粒度級別上突出強調應用程序的運行過程。 
WARN: 輸出警告信息;代表會出現潛在錯誤的情形。 
ERROR:輸出錯誤信息;指出雖然發生錯誤事件,但仍然不影響系統的繼續運行。 
FATAL: 輸出致命錯誤;指出每一個嚴重的錯誤事件將會致使應用程序的退出。 

2個日誌開關 :
ALL level:打開全部日誌記錄開關;是最低等級的,用於打開全部日誌記錄。 
OFF level:關閉全部日誌記錄開關;是最高等級的,用於關閉全部日誌記錄。

按照範圍從小到大排序:

OFF level > FATAL > ERROR > WARN > INFO > DEBUG > ALL level;範圍大的會包含範圍小的,例如日誌設置爲INFO級別的話則FATAL、ERROR、WARN、INFO的日誌開關都是打開的,而DEBUG的日誌開關將是關閉的。

建議:

Log4j或logback建議只使用四個級別,優先級從高到低分別是 ERROR、WARN、INFO、DEBUG。

相關文章
相關標籤/搜索