使用SLF4J和LOGBACK (一 : 基本使用)

 1.SLF4J是什麼?html

slf4j是一個日誌門面,它不是具體的日誌實現框架,而是提供了通用的日誌接口,按我的理解來講,是經過接口實現多態,來知足應用在不一樣日誌框架間切換的需求。
例如在程序中咱們須要記錄日誌,使用SLF4J提供的接口來調用:
Logger logger = LoggerFactory.getLogger(Class.class);
logger.info();

上邊兩行代碼中的Logger和LoggerFactory對象均來自SLF4J包中。api

具體的日誌實現框架,咱們能夠選擇LOG4J,LOGBACK等做爲日誌的具體實現,可是日誌的打印輸出統一使用SLF4J提供的接口。框架

這樣在切換日誌實現框架時,因爲日誌打印相關操做都是使用slf4j的接口,和具體的實現無關。只須要替換日誌實現框架便可輕鬆實現日誌框架的替換。
 
2.LOGBACK:
logback是一個日誌記錄框架,本文只介紹開發經常使用的配置和使用,並無很深刻的說明,有需求的能夠看官網文檔,很詳細的介紹了logback,
本文也是從官網的文檔中摘選出了開發經常使用的配置來講明如何使用該框架記錄日誌
 
2.1 引入jar包:
使用logback須要引入相關jar包:slf4j-api.jar,logback-core.jar,logback-classic.jar。經過maven引用便可,很少說了。
 
2.2 測試類:
    
package chapters.introduction;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloWorld1 {
  public static void main(String[] args) {
    Logger logger = LoggerFactory.getLogger("chapters.introduction.HelloWorld1");
    logger.debug("Hello world.");
  }
}

上邊的代碼及其簡單,main方法中使用了SLF4J的Logger對象打印了Hello world字符串,直接運行main方法將獲得以下結果:maven

20:49:07.962 [main] DEBUG chapters.introduction.HelloWorld1 - Hello world.
上邊這行輸出中,第一個字段的時間是當前系統時間,第二個字段是運行方法所在的線程名稱,第三個字段是日誌級別
第四個字段是打印日誌的類完整路徑,- 以後的內容是具體的打印內容
我沒作任何的配置,因此以上的輸出格式其實就是logback默認的日誌格式,日誌的默認級別就是DEBUG
 
2.3 打印logback內部狀態:
沒作任何配置的狀況下咱們也可使用,可是默認的格式和日誌級別不必定是咱們想要的,若是咱們想定製須要如何寫?
首先打印一下logback日誌內部的狀態看一下輸出結果,修改一下上面的代碼以下:
    
  public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger(HelloWorld1.class);
        logger.debug("Hello world.");
        LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
        StatusPrinter.print(lc);
    }

再次運行main方法將看到以下的輸出:測試

 

能夠看到截圖中有三個Could NOT find,這說明在logback在運行時會按順序找三個文件,可是都沒有找到,最後一行Setting up default configuration代表使用默認的配置。
因此若是須要定製logback,只須要提供相應的文件便可。按順序分別是:logback-test.xml,logback.groovy,logback.xml
那麼默認的配置是什麼?又在哪裏?
答案是logback有個: BasicConfigurator類,這個類的配置就是logback爲咱們提供的默認配置選項,有興趣的能夠去看看源碼。
下一篇介紹logback的簡單配置。
相關文章
相關標籤/搜索