本人独立域名One Coder博客:http://www.coderli.com/archives/logback-slf4j

转载请务必注明出处:One Coder - http://www.coderli.com/archives/logback-slf4j 

最近看到slf4j+logback的日志方案,决定从commons-logging+log4j切换过来。

logback官网:(该作者即为log4j的作者)

http://logback.qos.ch/

切换方式非常简单,在原有基础上加入如下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

 

 
  
  1. <dependency> 
  2.     <groupId>org.slf4j</groupId> 
  3.     <artifactId>slf4j-api</artifactId> 
  4.     <version>1.6.2</version> 
  5. </dependency> 
  6. <dependency> 
  7.     <groupId>org.slf4j</groupId> 
  8.     <artifactId>jcl-over-slf4j</artifactId> 
  9.     <version>1.6.2</version> 
  10. </dependency> 
  11. <dependency> 
  12.     <groupId>ch.qos.logback</groupId> 
  13.     <artifactId>logback-core</artifactId> 
  14.     <version>0.9.29</version> 
  15. </dependency> 
  16. <dependency> 
  17.     <groupId>ch.qos.logback</groupId> 
  18.     <artifactId>logback-classic</artifactId> 
  19.     <version>0.9.29</version> 
  20. </dependency> 

 

 logback会依次读取以下类型配置文件:logback.groovy,logback-test.xml,logback.xml(如果均不存在会采用默认配置)

logback.xml样例如下:

 

 
  
  1. <?xml version="1.0" encoding="UTF-8"?>   
  2. <configuration>   
  3.   <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">   
  4.     <encoder  class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">   
  5.       <pattern>%d{yyyy/MM/dd-HH:mm:ss.SSS} %level [%thread] %class:%line>>%msg%n</pattern>   
  6.     </encoder >   
  7.   </appender>   
  8.    
  9.   <root level="INFO">   
  10.     <appender-ref ref="stdout" />   
  11.   </root>   
  12. </configuration> 

 

 

其中pattern属性的意义跟log4j基本相同,具体可参考官方文档:http://logback.qos.ch/manual/layouts.html

logback.groovy的样例代码如下:

 

 
  
  1. import static ch.qos.logback.classic.Level.DEBUG 
  2. import ch.qos.logback.classic.encoder.PatternLayoutEncoder 
  3. import ch.qos.logback.core.ConsoleAppender 
  4.  
  5. appender("CONSOLE", ConsoleAppender) { 
  6.   encoder(PatternLayoutEncoder) { 
  7.     pattern = "%d{yyyy/MM/dd-HH:mm:ss} %-5level [%thread] %class{5}:%line>>%msg%n" 
  8.   } 
  9. root(DEBUG, ["CONSOLE"]) 

 

 

官方提供了logback.xml->logback.groovy的转换工具,地址如下:http://logback.qos.ch/translator/asGroovy.html

对于logback.groovy的使用,需要注意的是:

 

  1. logback.groovy需要放在源码包的根目录下,否则会找不到。
  2. 在eclipse中,如果安装了groovy的插件,需要将放置logback.groovy的源码包位置设置为groovysrcipt的所在位置,即在编译的时候不将goorvy编译成class文件,而是直接讲groovy脚本复制到output path下。否则扔无法生效。

 本人独立域名One Coder博客:http://www.coderli.com/archives/logback-slf4j

转载请务必注明出处:One Coder - http://www.coderli.com/archives/logback-slf4j