最新消息:欢迎访问若有所思,如果你也有与我相同的兴趣爱好,请关注我的站点。

Logback时间和文件大小组合Rolling策略

编程基础 若远 9647浏览 0评论
||||| 0 |||||

概述

实际开发过程中,基于SLF4J的LOG体系,Logback是一种不错的日志管理实现,有着不错的性能和扩展性。

appender digram

今天需要讨论的是在日常开发过程中基于时间的日志分片方式是我们最常用的模式,它的配置也非常简单,通常也能工作的很好,每天按指定的时间片进行Rolling。

但是,当你的应用逐步复杂你会发现每天产生的日志体积逐渐不受控制,甚至导致机器磁盘被日志打满的场景。因此,光使用时间维护的保护机制对于一个线上的复杂应用是不够保险的。这时Time+Size是一个不错的Rolling组合策略。本文将介绍两种方式实现该Rolling策略的配置。

方式一:基于Trigger

Logback在其后续的一些版本中提供了AppenderTrigger机制,简单的说可以配置一定的条件触发器指定日志Rolling的策略(这里需要注意的是具体怎么Rolling还是由RollingPolicy中的rollover决定的,Trigger仅仅是条件性触发rollover操作而已),这为日志的Rolling策略提供更多的扩展方式。其中,Logback包含了一个内置的SizeBasedTriggeringPolicy触发器,即可实现按照日志大小触发回收。

除此之外,早期的版本中SizeBasedTriggeringPolicy存在重大的缺陷,无法使用(见http://jira.qos.ch/browse/LOGBACK-73)最新版本已经修正该问题,具体的配置如下:

方式二:采用SizeAndTimeBasedRollingPolicy

在Logback的最新版本中已经包含了基于时间、大小两个维度Rolling策略的内置PolicySizeAndTimeBasedRollingPolicy。你只需要引入该Policy做一些简单的配置即可满足需求。具体配置如下:

最后需要提醒一下的是,该Plolicy的实现起始非常的简陋,仅仅合并了SizeTriggerTimeBase的特性,并没有实现基于Size的和Time的双重rollover策略。因此,如果对日志有一定需求的开发者,应该将这两者的实现作为参考扩展实现符合自己预期的日志Rolling Policy

参考文献

[1] http://logback.qos.ch/manual/appenders.html#SizeAndTimeBasedFNATP

转载请注明:若有所思-胡磊 » Logback时间和文件大小组合Rolling策略

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

  1. I'm so glad that the inentret allows free info like this!
    Elly2年前 (2017-06-08)回复