【问题标题】:log4j2 Default rollover strategy not deleting logslog4j2 默认翻转策略不删除日志
【发布时间】:2017-06-16 11:37:01
【问题描述】:

我有 log4j2 和这样设置的默认翻转策略 -

<RollingFile name="RollingFile" fileName="cc" filePattern="logs/${baseFileName}-%d{yyyy-MM-dd}.log.gz">
        <PatternLayout>
            <pattern>%d{dd/MMM/yyyy HH:mm:ss,SSS}- %c{1}: %m%n</pattern>
        </PatternLayout>
        <Policies>
            <TimeBasedTriggeringPolicy interval="1" modulate="true" />
        </Policies>
        <DefaultRolloverStrategy>
            <Delete basePath="logs/">
                <IfFileName glob="logs/${baseFileName}-*.log" />
                <IfLastModified age="2d" />
            </Delete>
        </DefaultRolloverStrategy>
    </RollingFile>

所以它应该在超过 2 天时删除最旧的文件对吗?

我的日志文件存储在项目的基本路径中名为 logs..的文件夹中。

但是我刚刚进行了一次测试运行,在我停止它之前它达到了 5 个文件....

知道是什么原因造成的吗?

【问题讨论】:

    标签: log4j2


    【解决方案1】:

    请检查以下配置删除旧文件: DefaultRolloverStrategy max="10" 表示每天最多可以创建 10 个文件。 您可以使用 IfAccumulatedFileCount exceeded="2" 来控制始终存在多少文件。 将指定文件的年龄,如果文件总数大于 2(在 IfAccumulatedFileCount 中指定),则从现在开始超过 2 天的文件将被删除。

    <DefaultRolloverStrategy max="100">
    <Delete basePath="${baseDir}" maxDepth="2">
      <IfFileName glob="*/app-*.log">
        <IfLastModified age="2d">
          <IfAny>
            <IfAccumulatedFileCount exceeds="2" />
          </IfAny>
        </IfLastModified>
      </IfFileName>
    </Delete>
    

    可能是在错误的路径中搜索要删除的文件,或者您的日志文件不是 2 天前的。 您使用的是哪个版本的 log4j?它适用于 Log4j-2.5 及更高版本

    【讨论】:

      【解决方案2】:

      最后缺少星号。请检查-

      <IfFileName glob="logs/${baseFileName}-*.log*" />
      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-06
        • 2016-02-10
        • 1970-01-01
        • 2016-08-01
        • 1970-01-01
        • 2016-04-14
        • 2018-02-24
        • 1970-01-01
        相关资源
        最近更新 更多