SizeBasedTriggeringPolicy限制不起作用

时间:2016-01-21 13:02:35

标签: logging log4j2

我的log4j2 xml中有以下设置

<Appenders>
        <RollingFile fileName="C:\logs\Fatal.log" filePattern="C:\logs\Fatal-%i.log" name="FatalFile">
            <Policies>
                <SizeBasedTriggeringPolicy size="10 MB"/>
            </Policies>
            <PatternLayout pattern="[%d{ISO8601}] %-5level %logger{6} - %msg%n"/>
        </RollingFile>
</Appenders>

当我的代码运行很长时间时,会创建7个日志,但之后日志大小开始超过10MB限制,并且对于所有7个文件变得非常大。

我需要知道为什么只创建了7个文件,以及如何限制文件大小不超过10 MB。

2 个答案:

答案 0 :(得分:1)

DefaultRolloverStrategy在同一天创建最多7个档案。文件大小超过10 MB可能是您使用的旧版Log4j 2中的错误。

从2.5开始,Log4j支持在每次翻转时执行的custom Delete action

您可以通过以下任意组合控制删除哪些文件:

  1. 姓名(匹配globregex
  2. Age(&#34;如果14天或更早,则删除&#34;)
  3. 计数(&#34;仅保留最近的3&#34;)
  4. 尺寸(&#34;仅保留最新文件,最高500MB&#34;)
  5. 需要对要删除的文件进行更细粒度控制的用户可以使用任何受支持的JSR-223脚本语言指定脚本条件。

    请查看documentation,它有三个可能有用的完整示例。

    另外,请注意您可以compress log files on rollover使它们占用更少的磁盘空间。

    最后,小心!没有办法恢复以这种方式删除的文件。 : - )

答案 1 :(得分:0)

我观察到了完全相同的行为。但在设置&#34;追加&#34; to&#34; false&#34;的属性,RollingFile appender按我的意愿行事。也许如果&#34;追加&#34;的默认值会更好。是&#34;假&#34; ...