log4j2 XML滚动文件附加器-附加程序中的微小更改使有效的xml文件代码无法正常工作

时间:2018-10-09 09:47:11

标签: log4j2

我有一个log4j2 xml文件附加程序,该附加程序可以正常工作,并且每分钟都会回滚文件。我对代码进行了一些调整,尝试将回滚更改为每天一次,但现在不起作用。我想念什么?

这是旧的XML文件附加器(有效的附加器):

        <!-- Rolling File Appenders -->
    <RollingFile name="RollingFile" fileName=".\logs\log${date:yyyyMMdd}.log" 
    filePattern=".\logs\oldLogs\log_%d{yyyyMMdd-HHmm}.log">
        <PatternLayout
            pattern="%d{yyyy-MM-dd HH:mm:ss:SSS} [%t] %-3level %logger{36} - %msg%n" />

        <Policies>
            <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
        </Policies>

        <DefaultRolloverStrategy max="3">
            <Delete basePath=".\logs\oldLogs" maxDepth="2">
            <IfAccumulatedFileCount exceeds="3" />
            </Delete>
        </DefaultRolloverStrategy>          
    </RollingFile>

这是每天滚动的新功能(无效):

        <!-- Rolling File Appenders -->
    <RollingFile name="RollingFile" fileName=".\logs\log${date:yyyyMMdd}.log" 
    filePattern=".\logs\oldLogs\log_%d{yyyyMMdd}.log">
        <PatternLayout
            pattern="%d{yyyy-MM-dd HH:mm:ss:SSS} [%t] %-3level %logger{36} - %msg%n" />

        <Policies>
            <OnStartupTriggeringPolicy/>
            <TimeBasedTriggeringPolicy interval="1" modulate="true" />
        </Policies>

        <DefaultRolloverStrategy max="10">
            <Delete basePath=".\logs\oldLogs" maxDepth="2">
            <IfAccumulatedFileCount exceeds="10"/>
            </Delete>
        </DefaultRolloverStrategy>          
    </RollingFile>

编辑: 我期望的行为: 〜将每天生成日志并将前一天的日志存储在此文件夹中:“。\ logs \ oldLogs \” 〜仅保留10条最新日志,并删除较旧的日志

当前行为: 〜每天生成日志,但是到明天为止,不会将文件滚动到以下文件夹:“。\ logs \ oldLogs \” 〜不删除任何日志文件

1 个答案:

答案 0 :(得分:0)

我认为最简单的解决方案是将fileName的{​​{1}}属性设为常量。最近的日志将始终包含在此文件中,因此我真的没有看到有必要在文件名上加上日期。日志存档后,日期将按照RollingFile添加到文件名中。

此外,您可以删除filePattern的{​​{1}}和OnStartupTriggeringPolicy属性。 max属性与RollingFileAppender DefaultRolloverStrategy参数的描述中提到的“整数计数器”一起使用,由于您未使用该计数器,因此max将无济于事你。

我相信这应该对您有用:

filePattern