使用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包是:
<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包是:
<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打印日志。
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>1.7.7</version>
</dependency>
配置文件使用XML格式配置:logback.xml 基本的示例:
<!--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/