Logback+slf4j应用总结(下载地址已更新)
如果是刚刚接触logback,建议先下载本文最后的《Logback手册.pdf》官方手册阅读。
1、?如何替换现有的log4j? ????
? ? ??现有项目:
?
?
去掉slf4j-log4j.jar和log4j.jar,添加logback-core.jar、logback-classical.jar。然后删除log4j.xml并且添加logback的配置文件logback.xml。(应用中有加载log4j配置文件的需要去掉)
这里是针对项目中已经使用了log4j+slf4j组合的情况。
如果现有项目只是使用了log4j,那么需要通过slf4j官方提供的工具修改项目源码(工具就是slf4j下载文件夹下的slf4j-migrator.jar)。
工具使用方法:http://www.slf4j.org/migrator.html。
如果项目使用的是log4j.properties来配置的,那么可以通过logback官方的工具转为logback.xml,但如果是log4j.xml,那么还是重新编写logback.xml比较好。
转换工具地址:http://logback.qos.ch/translator/?,
新项目:
直接添加logback-core.jar、logback-classical.jar和log4j-over-slf4j.jar三个jar包,编写logback.xml配置文件。
2、?重加载配置文件
配置如下:
<configuration scan="true" scanPeriod="30 seconds" >
? ...
</configuration>
如果不指定scanPeriod,默认情况下是每分钟重新读取的配置文件。这里可以通过scanPeriod属性配置时间间隔,单位有:milliseconds, seconds, minutes or hours,如上面的三十秒(数值跟单位中间空格隔开)。这里没有指定单位的情况下默认单位是milliseconds。
PS:
1-?根据官方文档,当scan设置为true,会自动添加一个过滤器,这个过滤器在logger线程中被调用。也就是说,当调用logger.debug(),这个方法执行前,会先调用过滤器的方法。假如这时logger的级别被设置成了info,那么logger.debug()任然会被调用。
2-?自动加载会影响性能。因此,所以在实现上,不是每次logger调用都会去判断scanPeriod是否到期,默认情况是没16次调用会去检查一下scanPeriod是否到期。所以说这个重加载会有很小的延迟。(开发环境中可以忽略)
3、?针对特定用户输入debug级别的日志。
?????????这里通过turboFilter来实现这个工具,如:在logback.xml中加入
<turboFilter class="ch.qos.logback.core.FileAppender">
??????? <File>log/${userid}.log</File>
??????? <Append>false</Append>
??????? <layout class="ch.qos.logback.classic.PatternLayout">
??????????? <Pattern>%d [%thread] %level %mdc %logger{35} - %msg%n</Pattern>
??????????????? </layout>
??????????? </appender>
??????? </sift>
??? </appender>
Java文件:
logger.debug("Application started");
MDC.put("userid", "Alice");
logger.debug("Alice says hello");
MDC.put("userid", null);
logger.debug("Alice says hello2");?
这里需要在每次记录log之前设置用户信息。(有点麻烦,可以简单封装一下,适合新项目)
6、log文件的压缩和自动删除? ? ? ?
????????logback提供一套自动压缩和删除的机制,具体配置查看logback_demos中的示例。
????????建议是这样一种日志布局:
??? |---------log根目录
??? ??? |-----------------动态log文件(当前被使用)
??? ??? |-----------------backup目录(用于存放日志备份)
??????? ??? ? ….
??????? ??? |------------------------日期目录(存放压缩好的备份日志,,过期的会被自动删除)
附件:
1. 附带一些demos(eclipse项目)?,下载地址:logback_demos.zip?
2. Logback官方中文手册,下载地址:Logback手册.pdf
已修改