logback使用

1. Spring MVC集成slf4j-log4j

關於slf4j和log4j的相關介紹和用法,網上有很多文章可供參考,但是關於logback的,尤其是spring
MVC集成logback的,就相對少一些了,而且其中一些也有着這樣那樣的問題。進入正題之前先簡單介紹下Spring
MVC集成slf4j-log4j的過程,如下:

1)在pom.xml文件中添加slf4j-log4j的依賴,完成後的classpath中將新增三個jar包,分別是:slf4j-api.jar、log4j.jar及slf4j-log4j.jar
2) 在當前classpath中添加log4j.properties配置文件,按照log4j的參數語法編寫該文件 3)
以上兩步完成後,普通的Java項目就能使用slf4j-log4j進行日誌處理了;對於Java
Web項目,還需要在web.xml文件中配置Log4jConfigLocation和Log4jConfigListener

2. log4j與logback簡要比較

本文意在闡述用logback替代log4j作爲Spring
MVC項目的日誌處理組件。這兩者雖然作者相同,但log4j早已被託管給Apache基金會維護,並且自從2012年5月之後就沒有更新了。而logback從出生開始就是其作者奔着取代log4j的目的開發的,因此一方面logback繼承了log4j大量的用法,使得學習和遷移的成本不高,另一方面logback在性能上要明顯優於log4j,尤其是在大量併發的環境下,並且新增了一些log4j所沒有的功能(如將日誌文件壓縮成zip包等)

3. Spring MVC集成slf4j-logback
3.1. 添加依賴

<dependency>  
    <groupId>ch.qos.logback</groupId>  
    <artifactId>logback-classic</artifactId>  
    <version>1.1.3</version>  
</dependency>  
<dependency>  
    <groupId>org.logback-extensions</groupId>  
    <artifactId>logback-ext-spring</artifactId>  
    <version>0.1.2</version>  
</dependency>  
<dependency>  
    <groupId>org.slf4j</groupId>  
    <artifactId>jcl-over-slf4j</artifactId>  
    <version>1.7.12</version>  
</dependency>  

如上所示是集成所需要的依賴,其中:
第一個logback-classic包含了logback本身所需的slf4j-api.jar、logback-core.jar及logback-classsic.jar
第二個logback-ext-spring是由官方提供的對Spring的支持,它的作用就相當於log4j中的Log4jConfigListener;這個listener,網上大多都是用的自己實現的,原因在於這個插件似乎並沒有出現在官方文檔的顯要位置導致大多數人並不知道它的存在
第三個jcl-over-slf4j是用來把Spring源代碼中大量使用到的commons-logging替換成slf4j,只有在添加了這個依賴之後才能看到Spring框架本身打印的日誌,否則只能看到開發者自己打印的日誌

3.2. 編寫logback.xml logback與log4j一樣,也需要在classpath中編寫配置文件。但logback配置文件似乎比log4j複雜一些:log4j不僅支持xml格式的配置文件,還支持properties格式的,而logback只支持xml格式的。好在官方提供了一個在線工具,可以將log4j的properties文件直接轉換成logback的xml文件,地址如下:
http://logback.qos.ch/translator/
logback的詳細用法及其xml文件的相關語法,可參見它的用戶嚮導,地址如下:
http://logback.qos.ch/manual/introduction.html

3.3. 配置web.xml
與log4j類似,logback集成到Spring MVC項目中,也需要在web.xml中進行配置,同樣也是配置一個config location和一個config listener,如下所示:

<context-param>  
         <param-name>logbackConfigLocation</param-name>  
         <param-value>classpath:logback.xml</param-value>  
</context-param>  
<listener>  
         <listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class>  
</listener>  

其中LogbackConfigListener由前述的logback-ext-spring依賴提供,若不依賴它則找不到這個listener類

4. 其它

從上面可以看出,slf4j-log4j和slf4j-logback集成到Spring MVC(或推廣到其它Java
Web項目中)的步驟大體是相同的。集成完畢後,就可以通過slf4j提供的API隱藏掉logback(或log4j)的具體實現,直接進行日誌處理了
使用slf4j-api的時候,需要注意的是:slf4j採用了單例模式,項目中創建的每一個Logger實例都會按你傳入的name(傳入的Class

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章