slf4j、logback的使用

使用slf4j配合log4j打日志已经使用很长时间了,已经习惯了log4j的properties文件配置了。
具体参考:《slf4j、log4j 的使用

虽然从log4j换到logback也不费劲,性能上提升在常规业务上也不是多么明显,但是作为处女座的我,还是想从log4j换到logback来。logback log4j 和slf4j都是同一作者。根据作者宣称的:

slf4j的出现是为了替代commons-logging
logback的出现是为了替代log4j,用作者的话,叫:“picking up where log4j leaves off”
logback比log4j会有更高的性能,和更多的功能支持。

如果你之前是使用slf4j+log4j的组合打日志的话,你只要换个jar包和配置文件就可以了。
之前需要的jar包是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<dependency>
     <groupId>org.slf4j</groupId>
     <artifactId>slf4j-api</artifactId>
     <version>1.7.7</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.7</version>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.16</version>
</dependency>

现在需要的jar包是:

1
2
3
4
5
6
7
8
9
10
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.7</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.1.2</version>
</dependency>

logback-classic的pom会自动引入logback-core包
一般都是sl4j和log4j一起使用的,很少有人直接用log4j的logger打日志。如果你已经那样做了,也不必要修改代码。
只要引入log4j-over-slf4j的桥接包,删掉log4j包,以前log4j打印的日志,会自动桥接到slf4j进而使用logback的logger打印日志。

1
2
3
4
5
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>log4j-over-slf4j</artifactId>
    <version>1.7.7</version>
</dependency>

配置文件使用XML格式配置:logback.xml
基本的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!--60秒检查一次配置文件是否有修改,即时生效-->
<configuration scan="true" scanPeriod="60 seconds" debug="false">  
  <property name="ROOT_LOG_PATH" value="/disk/log" />  <!--设置变量-->
 
     <appender name="STDOUT"> <!-- 打印到控制台的appender -->
       <encoder>   
        <pattern>%d{HH:mm:ss.SSS}%-5level %logger{36}-%msg%n</pattern>   
       </encoder>   
    </appender>
 
    <appender name="FILE"> <!--打印到文件,20M滚一个,最多20个-->
        <file>test.log</file>   
        <rollingPolicy>   
          <fileNamePattern>${ROOT_LOG_PATH}/my.log.%i</fileNamePattern>     
          <maxIndex>20</maxIndex>   
        </rollingPolicy>
        <triggeringPolicy>   
          <maxFileSize>20MB</maxFileSize>   
        </triggeringPolicy>   
        <encoder>   
         <pattern>%d{HH:mm:ss.SSS}%-5level %logger{36}-%msg%n</pattern>     
        </encoder>   
    </appender>  
    <root level="DEBUG">    <!--根日志-->
         <appender-ref ref="FILE" />   
    </root>  
    <!--设置包com.zhaoyanblog的日志级别,
设置是否也打印一份到它的父logger(这里是root)设置的appender里-->
    <logger name="com.zhaoyanblog" level="INFO" additivity="false">
        <appender-ref ref="STDOUT"/>  
    </logger>
    <!--设置包com.zhaoyanblog.test的日志级别-->
    <logger name="com.zhaoyanblog.test" level="ERROR" /> 
</configuration>

以上是对logback的简单配置,平常足够使用了,如果你已经习惯了log4j的properties形式的配置文件,想使用更高效的logback,又不想去学习logback的配置形式。logback为你这种懒人提供了一个log4j.properties在线自动转logback.xml的页面:
http://logback.qos.ch/translator/

  1. 云顶吹风说道:

    会继续支持的、。

留言

提示:你的email不会被公布,欢迎留言^_^

*

验证码 *