1. 程式人生 > >slf4j+logback配置方式和logback.groovy配置檔案

slf4j+logback配置方式和logback.groovy配置檔案

最近看到slf4j+logback的日誌方案,並且介紹說,與log4j出自同一作者且做了不少優化,所以決定從commons-logging+log4j切換過來。

切換方式非常簡單,在原有基礎上加入如下jar包即可。

  • slf4j-api-1.6.2.jar
  • jcl-over-slf4j-1.6.2.jar \\用於橋接commons-logging 到 slf4j

如果直接使用slf4j+logback的方案則無需此jar logback目前最新版是1.0.3

Maven依賴如下:

<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基本相同,具體可參考

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的轉換工具

對於logback.groovy的使用,需要注意: logback.groovy需要放在原始碼包的根目錄下,否則會找不到。 在eclipse中,如果安裝了groovy的外掛,需要將放置logback.groovy的原始碼包位置設定為groovysrcipt的所在位置,即在編譯的時候不將goorvy編譯成class檔案,而是直接將groovy指令碼複製到output path下。否則仍無法生效。