现在越来越多的项目用 Slfj,而与它结合最好的 Log4j 替代品就是 Logback,下面是 Logback 的一个可供参考的基本的配置文件 logback.xml,可以控制台和文件同时输出,文件可进行两种类型的归档,分天存储日志,或按文件大小压缩日志归档。
Logback 和 Log4J 同出一人之手,而作者的专注点也在 Logback,Logback 有更好的性能,特别是在现代 Java 程序中。
一般是 rollingPolicy 和 triggeringPolicy 搭配使用,rollingPolicy 负责做什么,triggeringPolicy 管理什么时候做,而 FixedWindowRollingPolicy 本身就实现了 TriggeringPolicy 接口,所以它能够自我管理,不需要别人来推动就会做的。
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
<?xml version="1.0" encoding="UTF-8"?> <!-- Reference Manual http://logback.qos.ch/manual/index.html --> <configuration> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <encoder charset="UTF-8"> <!-- encoder 可以指定字符集,对于中文输出有意义 --> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern> </encoder> </appender> <appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>TRACE</level> </filter> <!-- 可让每天产生一个日志文件,最多 10 个,自动回滚 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>d:/log/Unmi-%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>10</maxHistory> </rollingPolicy> <!-- 下面这段注释的代码可以在日志文件超过 5MB 时进行归档,并且归档文件后缀只要是 .zip 或 .gz 就会自动压缩日志归档 --> <!--file>d:/log/Unmi.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <fileNamePattern>d:/log/Unmi.%i.log.zip</fileNamePattern> <minIndex>1</minIndex> <maxIndex>10</maxIndex> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>5MB</maxFileSize> </triggeringPolicy--> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern> </encoder> </appender> <!-- 输出到控制台和文件,可定义更多的 Appender --> <root level="DEBUG"> <appender-ref ref="stdout" /> <appender-ref ref="RollingFile"/> </root> <!-- 下面配置一些第三方包的日志过滤级别,用于避免刷屏 --> <logger name="org.hibernate" level="WARN"/> <logger name="org.springframework" level="WARN"/> <logger name="com.opensymphony" level="WARN"/> <logger name="org.apache" level="WARN"/> <!-- show parameters for hibernate sql 专为 Hibernate 定制 --> <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/> <logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG"/> <logger name="org.hibernate.SQL" level="DEBUG"/> <logger name="org.hibernate.engine.QueryParameters" level="DEBUG"/> <logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG"/> </configuration> |
参考:1. The logback manual
2. logback.xml配置如何按天输出日志文件
本文链接 https://yanbin.blog/slfj-logback-xml-base-config/, 来自 隔叶黄莺 Yanbin Blog
[版权声明] 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。
TimeBasedRollingPolicy 与 SizeBasedTriggeringPolicy 同时使用,好像SizeBasedTriggeringPolicy没有效果哦.
这两个的联合是有问题,可参见
http://openmind.iteye.com/blog/1840000
http://jira.qos.ch/browse/LOGBACK-73
http://logback.qos.ch/manual/appenders.html#SizeAndTimeBasedFNATP
用 TimeBasedRollingPolicy,它有个属性 timeBasedFileNamingAndTriggeringPolicy。