log4j2-每日RollingFile附加程序的DefaultRolloverStrategy,最大值不受尊重

时间:2019-01-28 14:06:05

标签: logging log4j2 rollingfileappender

我正在尝试编写一个每日滚动策略的追加程序,该策略每天最多可容纳10个文件,无论何时

每10 MB,它将创建一个新的日志文件,并将其与今天的日期和索引一起存储。

这是我到目前为止所拥有的:

<RollingFile name="MyRollingFile" fileName="./log/logs.log"
            filePattern="./log/logs-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout>
                <pattern>%n%d{yy-MM-dd HH:mm:ss.SSS} [%p] %m</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="10MB" />
            </Policies>
            <DefaultRolloverStrategy max="10" />
        </RollingFile>

这是不正确的,因为这每天最多最多保存十个文件,但是我总共希望最多保存十个文件。所以很明显,十天后我发现多达100个文件。我想将最大文件总数限制为10个。我该怎么办?

1 个答案:

答案 0 :(得分:0)

请参阅http://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender中记录的DefaultRolloverStrategy的Delete操作。简而言之,您想要的是

<DefaultRolloverStrategy max="10">
  <Delete basePath="./logs">
      <IfFileName glob="*/logs-*.log" />
      <IfAccumulatedFileCount exceeds="10" />
    </Delete>
</DefaultRolloverStrategy>

我还应该指出,由于您没有基于时间的过渡策略,因此filePattern中的日期将始终包含配置Log4j的时间,并且索引将不断递增。您需要添加TimeBasedTriggeringPolicy或CronTriggeringPolicy才能每天更改日期。