【问题标题】:log4j2 - DefaultRolloverStrategy for daily RollingFile appender, max not respectedlog4j2 - 每日 RollingFile appender 的 DefaultRolloverStrategy,不考虑最大值
【发布时间】:2019-01-28 14:06:04
【问题描述】:

我正在尝试编写一个具有每日滚动策略的附加程序,其中最多 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>

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

【问题讨论】:

    标签: logging log4j2 rollingfileappender


    【解决方案1】:

    请参阅 http://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender 中记录的 DefaultRolloverStrategy 的删除操作。总之你想要的是

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

    我还应该指出,由于您没有基于时间的翻转策略,因此 filePattern 中的日期始终包含配置 Log4j 的时间,并且索引将无休止地增加。您需要添加 TimeBasedTriggeringPolicy 或 CronTriggeringPolicy 以使日期每天都发生变化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多