log4j2默认翻转策略不删除日志

时间:2017-06-16 11:37:01

标签: log4j2

我有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个文件....

任何可能导致这种情况的想法?

2 个答案:

答案 0 :(得分:2)

请检查以下配置以删除旧文件: DefaultRolloverStrategy max =“10”表示每天最多可以创建10个文件。 您可以使用IfAccumulatedFileCount beyond =“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及以上

答案 1 :(得分:0)

最后缺少星号。请检查 -

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