【问题标题】:Log4j and Logback FileAppender maxFileSize and maxBackupIndexLog4j 和 Logback FileAppender maxFileSize 和 maxBackupIndex
【发布时间】:2013-10-07 22:39:21
【问题描述】:

我需要控制日志框架的最大磁盘空间量。
例如,在 log4j 中,如果我有这样的 appender,我可以轻松估计需要多少磁盘空间:

<appender name="appender" class="org.apache.log4j.RollingFileAppender"> 
    <param name="file" value="example.log"/>
    <param name="MaxFileSize" value="100KB"/>
    <param name="MaxBackupIndex" value="10"/>
    <layout class="org.apache.log4j.PatternLayout"> 
        <param name="ConversionPattern" value="%p %t %c - %m%n"/> 
    </layout> 
</appender>

使用 maxFileSize 和 maxBackupIndex 我知道我最多需要 10x100KB。
我注意到 DailyRollingFileAppender 但它不支持 maxFileSize。

除了 RollingFileAppender 之外,还有其他 FileAppender 可以实现这种控制吗? logback 或 log4j2 是否提供其他 FileAppenders/alternatives?

注意:我正在寻找仅配置日志框架的方法,没有像 crontab 和 rm 命令这样的外部进程。欢迎使用 thisthisthis 等第 3 方 FileAppender。

【问题讨论】:

    标签: java log4j logback log4j2 fileappender


    【解决方案1】:

    logback 或 log4j2 是否提供其他 FileAppenders/alternatives

    log4j2 引入了RandomAccessFileAppenderRollingRandomAccessFileAppender,它们仍处于试验阶段,可能会在未来的版本中取代FileAppenderRollingFileAppenderSee here.

    但是当前的RollingFileAppender 需要TriggeringPolicy

    • OnStartup 触发策略:如果日志文件早于当前 JVM 的启动时间,OnStartup 策略不接受任何参数并导致翻转。

    • 基于大小的触发策略:一旦文件达到指定大小,就会导致翻转。大小可以以字节、KB、MB 或 GB 为单位指定。

    • 基于时间的触发策略:一旦日期/时间模式不再适用于活动文件,就会导致翻转。此策略接受一个“增量”属性,该属性指示基于时间模式和“调制”布尔属性应该多久发生一次翻转。

    【讨论】:

    • 我同意 SizeBased 触发策略可能是 cenoura 正在寻找的。为了完整起见,RollingFileAppender 和 RollingRandomAccessFileAppender 都支持相同的触发策略。
    • 是的,它似乎可以解决问题。即使将SizeBasedTriggeringPolicyTimeBasedTriggeringPolicyDefaultRolloverStrategy 一起使用,我想我也可以估计最大磁盘使用量,因为DefaultRolloverStrategy 会限制文件数量。 @Sage 感谢您指出RandomAccessFileAppenderRollingRandomAccessFileAppender。看起来它们的性能比 RollingFileAppender 好得多。
    • 没错。尽管它们仍处于实验阶段。对不起,我也应该提到翻转策略。 :(
    猜你喜欢
    • 2020-12-08
    • 2017-04-28
    • 2014-10-21
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多