【问题标题】:Log4j2 Rollover based on date but override based on size limitLog4j2 基于日期翻转但基于大小限制覆盖
【发布时间】:2018-02-13 08:34:36
【问题描述】:

我正在尝试配置一个 RollingFile 附加程序,该附加程序在每个月(18 个月)后执行翻转。但是,此外,如果 log4j2 达到 25 MB,我希望 log4j2 覆盖我当前的日志。例如,如果我们目前在二月,那么我将有一个一月的先前日志。但是,如果我当前 2 月的日志将达到 25 MB,那么我的 2 月日志将被 2 月的新日志覆盖。这是我当前的 appender 配置:

<RollingFile name="audit-log" fileName="${sys:user.dir}/${baseDir}/${projectName}-Audit.log" immediateFlush="true" filePattern="${sys:user.dir}/${baseDir}/${projectName}-Audit.%d{yyyy-MM}.log">
    <PatternLayout pattern="%d %-5level: %msg%n"/>
    <Policies>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="25 MB"/>
    </Policies>
    <DefaultRolloverStrategy max="18"/>
</RollingFile>

但是,无论我是换了几个月还是达到了 25 MB 的大小限制,这都会产生影响。如何让日志仅在切换月份后滚动,但在达到大小限制后覆盖当前日志?

谢谢!

【问题讨论】:

    标签: java log4j2


    【解决方案1】:

    我能够使用以下配置解决此问题:

    <RollingFile name="audit-log" fileName="${sys:user.dir}/${baseDir}/${projectName}-Audit.log" immediateFlush="true" filePattern="${sys:user.dir}/${baseDir}/${projectName}-Audit.%d{yyyy-MM}.log">
        <PatternLayout pattern="%d %-5level: %msg%n"/>
        <Policies>
            <TimeBasedTriggeringPolicy />
            <SizeBasedTriggeringPolicy size="25 MB"/>
        </Policies>
        <DefaultRolloverStrategy max="1">
            <Delete basePath="${baseDir}">
                <IfAccumulatedFileCount exceeds="18" />
            </Delete>
        </DefaultRolloverStrategy>
    </RollingFile>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-02
      • 2019-01-20
      • 2010-12-11
      • 1970-01-01
      相关资源
      最近更新 更多