【问题标题】:maxHistory tag not working with log4j2 xmlmaxHistory 标记不适用于 log4j2 xml
【发布时间】:2021-11-17 10:07:23
【问题描述】:
<maxHistory>30</maxHistory>

我想删除一个在 log4j2 xml 中超过几天的日志文件,因此我使用上面定义的 maxHistory 标记并将其值设为 30 天。但是下面的标签似乎是无效的,并显示如下错误。

策略包含无效的元素或属性“maxHistory”

任何想法为什么此属性不起作用。

    <RollingFile name="AppFile"
                 fileName="/app/logs/test.log"
                 filePattern="/app/logs/archive/test-%d{yyyy-MM-dd-HH}-%i.log">
        <PatternLayout>
            <pattern>%d [%t] %p %c - %m%n</pattern>
        </PatternLayout>
        <Policies>
            <TimeBasedTriggeringPolicy interval="1"
                                       modulate="true" />
            <SizeBasedTriggeringPolicy size="500 MB" />
            <maxHistory>30</maxHistory>
        </Policies>
        <DefaultRolloverStrategy max="10" />
    </RollingFile>
</Appenders>

<Loggers>

    <Logger name="com" level="INFO" additivity="false">
        <AppenderRef ref="AppFile" />
    </Logger>

    <Root level = "info">
        <AppenderRef ref = "CONSOLE" />
    </Root>

</Loggers>

【问题讨论】:

  • 对,就是文件名-log4j2.xml
  • 你需要展示你的整个配置文件。
  • xml 添加到问题中

标签: java logging log4j2


【解决方案1】:

您需要使用自定义删除操作:

<RollingFile ... >
  ...
  <DefaultRolloverStrategy>
        <Delete basePath="${baseDir}" maxDepth="2">
          <IfLastModified age="30d" />
        </Delete>
  </DefaultRolloverStrategy>
</RollingFile>

有关完整文档,请参阅 https://logging.apache.org/log4j/2.x/manual/appenders.html#CustomDeleteOnRollover

【讨论】:

  • 这里表示将删除30天以上的日志文件。这里的 maxDepth 是什么意思?
  • 这就是在 ${baseDir} 下查找要删除的文件的深度。并不总是必要的。
  • 感谢您的快速回复。我想没有机会使用这种方法恢复这些文件。为了恢复目的,我们是否有一些方法和另一件事是 maxHistory 最终不适用于 log4j2 对吗?
  • maxHistory 不是 log4j2 配置标签——我认为它可能是一个 logback 标签。恢复这些文件是什么意思?您的意思是在它们被删除后恢复它们吗?
  • 是的,以防我们需要它们。
【解决方案2】:

除了第一个答案之外,DefaultRolloverStrategy 还提供了一个 max 字段,其描述如下,可帮助您实现删除旧日志。

<DefaultRolloverStrategy max="10" />

max :计数器的最大值。一旦达到此值,旧存档将在后续翻转时被删除。默认值为 7。

这里的计数器对应于文件模式中给出的%i,并通过这个计数器参数删除。

filePattern="/app/logs/archive/test-%d{yyyy-MM-dd-HH}-%i.log">

上面使用&lt;Delete&gt; 的答案有助于让您更好地控制要删除的文件,但文档还指出要小心使用&lt;Delete&gt;

欲了解更多信息https://logging.apache.org/log4j/2.x/manual/appenders.html

【讨论】:

    猜你喜欢
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-25
    • 2013-01-14
    相关资源
    最近更新 更多