javascript
Spring MVC集成slf4j-logback
轉(zhuǎn)自:?Spring MVC集成slf4j-logback
?
?
1.? Spring MVC集成slf4j-log4j
關(guān)于slf4j和log4j的相關(guān)介紹和用法,網(wǎng)上有很多文章可供參考,但是關(guān)于logback的,尤其是spring?MVC集成logback的,就相對少一些了,而且其中一些也有著這樣那樣的問題。進(jìn)入正題之前先簡單介紹下Spring MVC集成slf4j-log4j的過程,如下:
1)??????在pom.xml文件中添加slf4j-log4j的依賴,完成后的classpath中將新增三個jar包,分別是:slf4j-api.jar、log4j.jar及slf4j-log4j.jar
2)??????在當(dāng)前classpath中添加log4j.properties配置文件,按照log4j的參數(shù)語法編寫該文件
3)??????以上兩步完成后,普通的Java項(xiàng)目就能使用slf4j-log4j進(jìn)行日志處理了;對于Java Web項(xiàng)目,還需要在web.xml文件中配置Log4jConfigLocation和Log4jConfigListener
2.? log4j與logback簡要比較
本文意在闡述用logback替代log4j作為Spring MVC項(xiàng)目的日志處理組件。這兩者雖然作者相同,但log4j早已被托管給Apache基金會維護(hù),并且自從2012年5月之后就沒有更新了。而logback從出生開始就是其作者奔著取代log4j的目的開發(fā)的,因此一方面logback繼承了log4j大量的用法,使得學(xué)習(xí)和遷移的成本不高,另一方面logback在性能上要明顯優(yōu)于log4j,尤其是在大量并發(fā)的環(huán)境下,并且新增了一些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及l(fā)ogback-classsic.jar
第二個logback-ext-spring是由官方提供的對Spring的支持,它的作用就相當(dāng)于log4j中的Log4jConfigListener;這個listener,網(wǎng)上大多都是用的自己實(shí)現(xiàn)的,原因在于這個插件似乎并沒有出現(xiàn)在官方文檔的顯要位置導(dǎo)致大多數(shù)人并不知道它的存在
第三個jcl-over-slf4j是用來把Spring源代碼中大量使用到的commons-logging替換成slf4j,只有在添加了這個依賴之后才能看到Spring框架本身打印的日志,否則只能看到開發(fā)者自己打印的日志
3.2.??????編寫logback.xml
logback與log4j一樣,也需要在classpath中編寫配置文件。但logback配置文件似乎比log4j復(fù)雜一些:log4j不僅支持xml格式的配置文件,還支持properties格式的,而logback只支持xml格式的。好在官方提供了一個在線工具,可以將log4j的properties文件直接轉(zhuǎn)換成logback的xml文件,地址如下:
http://logback.qos.ch/translator/
logback的詳細(xì)用法及其xml文件的相關(guān)語法,可參見它的用戶向?qū)?#xff0c;地址如下:
http://logback.qos.ch/manual/introduction.html
3.3.??????配置web.xml
與log4j類似,logback集成到Spring MVC項(xiàng)目中,也需要在web.xml中進(jìn)行配置,同樣也是配置一個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項(xiàng)目中)的步驟大體是相同的。集成完畢后,就可以通過slf4j提供的API隱藏掉logback(或log4j)的具體實(shí)現(xiàn),直接進(jìn)行日志處理了
使用slf4j-api的時候,需要注意的是:slf4j采用了單例模式,項(xiàng)目中創(chuàng)建的每一個Logger實(shí)例都會按你傳入的name(傳入的Class<?>實(shí)例也會被轉(zhuǎn)換成String型的name)保存到一個靜態(tài)的ConcurrentHashMap中;因此只要name(或Class<?>實(shí)例)相同,每次返回的實(shí)際上都是同一個Logger實(shí)例。因此完全沒必要把Logger實(shí)例作為常量或靜態(tài)成員,隨用隨取即可。實(shí)際上,其作者也不建議那么做
轉(zhuǎn)載于:https://www.cnblogs.com/drizzlewithwind/p/6043944.html
總結(jié)
以上是生活随笔為你收集整理的Spring MVC集成slf4j-logback的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 领域模型(domain model)贫血
- 下一篇: ORB-SLAM2中生成金字塔提取FAS