最近看到slf4j+logback的日志方案,决定从commons-logging+log4j切换过来。
logback官网:(该作者即为log4j的作者)
切换方式非常简单,在原有基础上加入如下jar包即可。
slf4j-api-1.6.2.jar
jcl-over-slf4j-1.6.2.jar \\用于桥接commons-logging 到 slf4j,如果直接使用slf4j+logback的方案则无需此jar
logback-core-0.9.29.jar
logback-classic-0.9.29.jar
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.6.2</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>1.6.2</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>0.9.29</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>0.9.29</version> </dependency>
logback会依次读取以下类型配置文件:logback.groovy,logback-test.xml,logback.xml
logback.xml样例如下:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy/MM/dd-HH:mm:ss.SSS} %level [%thread] %class:%line>>%msg%n</pattern> </encoder > </appender> <root level="INFO"> <appender-ref ref="stdout" /> </root> </configuration>
其中pattern属性的意义跟log4j基本相同,具体可参考官方文档:http://logback.qos.ch/manual/layouts.html
logback.groovy的样例代码如下:
import static ch.qos.logback.classic.Level.DEBUG import ch.qos.logback.classic.encoder.PatternLayoutEncoder import ch.qos.logback.core.ConsoleAppender appender("CONSOLE", ConsoleAppender) { encoder(PatternLayoutEncoder) { pattern = "%d{yyyy/MM/dd-HH:mm:ss} %-5level [%thread] %class{5}:%line>>%msg%n" } } root(DEBUG, ["CONSOLE"])
官方提供了logback.xml->logback.groovy的转换工具,地址如下:http://logback.qos.ch/translator/asGroovy.html
对于logback.groovy的使用,需要注意的是:
另外,个人使用中发现,使用xml的配置方式比groovy在第一次解析的时候要快很多,当然解析后效率一样。