我需要控制日志记录框架的最大磁盘空间量。
例如,在log4j中,如果我有一个这样的附加程序,我可以轻松估算出我需要多少磁盘空间:

<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之外,还有其他FileAppenders可以实现此控制吗?
logback或log4j2是否提供其他FileAppender /替代方案?

注意:我正在寻找仅配置日志记录框架的方法,没有使用rm命令的外部程序(如crontab)。欢迎第三方应用程序,例如thisthisthis

最佳答案

logback或log4j2是否提供其他FileAppender /替代方案

log4j2引入了仍在实验阶段的RandomAccessFileAppenderRollingRandomAccessFileAppender,在将来的发行版中可能会替换FileAppenderRollingFileAppenderSee here

但是当前的 RollingFileAppender 需要一个TriggeringPolicy:

  • OnStartup触发策略:如果日志文件早于当前JVM的启动时间,则OnStartup策略不使用任何参数并导致过渡。
  • 基于大小的触发策略:一旦文件达到指定大小,将导致翻转。大小可以以字节,KB,MB或GB指定。
  • 基于时间的触发策略:一旦日期/时间模式不再适用于 Activity 文件,将导致过渡。此策略接受“增量”属性,该属性根据时间模式和“调制”布尔属性指示翻转发生的频率。
  • 10-05 18:10