由于现在开源框架日益丰富,好多开源框架使用的日志组件不尽相同。存在着在一个项目中,不同的版本,不同的框架共存。
其中有一些标准通用接口,标准实现,各种桥接器的存在,下面就让笔者树立一下这些框架之间的关系。
slf4J与旧日志框架的关系
slf4j等于commons-logging,是各种日志实现的通用入口,会根据classpath中存在下面哪一个Jar来决定具体的日志实现库。
logback-classic(默认的logback实现)
slf4j-jcl.jar(apache commons logging)
slf4j-logj12.jar(log4j 1.2.4)
slf4j-jdk14(java.util.logging)
将所有使用旧式日志API的第三方类库或旧代码的日志调用转到slfj
jcl-over-slf4j.jar/jcl104-over-slf4j:apache commons logging 1.1.1/1.0.4,直接替换即可。
log4j-over-slf4j.jar:log4j,直接替换即可。
jul-to-slf4j:jdk logging,需要在程序开始时调用SLF4JBridgeHandler.install()来注册listener参考JulOverSlf4jProcessor,可在applicationContext.xml中定义该bean来实现初始化。注意原有的log4j.properites将失效,logback网站上提供转换器,支持从log4j.properties 转换到logback.xml 。
如何配置Logback
org.slf4j
slf4j-api
${slf4j.api.version}
ch.qos.logback
logback-core
1.1.0
jar
ch.qos.logback
logback-classic
1.1.0
jar
org.slf4j
log4j-over-slf4j
1.6.6
org.slf4j
jcl-over-slf4j
1.6.6
与遗留Logging框架兼容
SLF4J对于Log4J 1和Apache commons Logging的支持方式是提供了实现Log4j和Apache commons Logging接口的SLF4J实现。使用方式是
去取对Log4J和Apache commons Logging的Jar包的引用
引入SLF4J的对应接口的实现包。
移除引用
如果你的系统是直接的使用了Log4j或者Apache commons Logging框架的话,你可以直接把对他们的引用去掉就可以了。如果是你所引用的第三方包里面引用了Log4j或者Apache commons Logging,可以使用标签去掉对他们的引用,如下所示:
org.springframework.ldap
spring-ldap-core
commons-logging
commons-logging
logback.xml
ldap-pwd.log
archive/ldap-pwd.%d{yyyy-MM-dd}.zip
30
%d [%thread] %-5level %40logger{40} - %msg%n