logback按时间与文件大小共同作用打印日志

最近log4j的日志框架满足不了项目开发的需求,于是找了logback这个生来就是为了超越并替代log4j的框架,但是要同时按时间和文件大小来打印日志的要求并没有一个appender可以满足,在网上查了很久也用了很多方法,都起不到预想的效果。很多方法是带回滚的,当设定了一个值后,日志超过这个限定便是会把以往的日志删除,这也有防止日志无限堆积的好处,但我现在是不想让日志被删除。


直到我找到了logback中文文档,一个前辈翻译的,从中我找到了解决方案。配置如下:

<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">  
    <encoding>UTF-8</encoding>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
        <FileNamePattern>${catalina.home}/logs/error.%d{yyyy-MM-dd}.%i.log</FileNamePattern>  
        <timeBasedFileNamingAndTriggeringPolicy     class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">     
    		<maxFileSize>100MB</maxFileSize>    
		</timeBasedFileNamingAndTriggeringPolicy> 
    </rollingPolicy>  
    <encoder>  
        <pattern>[%date{yyyy-MM-dd HH:mm:ss}] [%-5level] [%logger:%line] --%mdc{client} %msg%n</pattern>  
    </encoder> 
</appender>  



依旧是ch.qos.logback.core.rolling.RollingFileAppender这个class,引用rollingPolicy时调用ch.qos.logback.core.rolling.TimeBasedRollingPolicy这个class,进行FileNamePattern配置。在rollingPolicy里再引用timeBasedFileNamingAndTriggeringPolicy,注意class用ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP,这个是官方文档里的class,之前在网上找到的没有用这个会导致整个不起效果。

这个配置达到的效果是,按每天日期打印日志,若一个日志文件达到100MB时,便创建新的日志文件,已创建的日志文件不会被程序自动删除。所得日志文件名如
error.2017-03-17.0.log
error.2017-03-17.1.log
error.2017-03-17.2.log

若要定期删除日志,在rollingPolicy里加
<maxHistory>30</maxHistory> 
这个配置里的数字单位是看fileNamePattern里配置的日期格式来确定,如上面配置日期格式是yyyy-MM-dd,配置到天,那么这里的30指的就是保留30天的日志,在第31天之后,每天会删除30天前的日志。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值