使用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/
除非注明,赵岩的博客文章均为原创,转载请以链接形式标明本文地址
本文地址:https://zhaoyanblog.com/archives/614.html
会继续支持的、。