Log4j2 rc 1 DefaultRolloverStrategy在7个文件后覆盖

时间:2015-06-13 11:42:36

标签: java log4j2

我正在使用lo4j2 rc1,其中RollingFile持有TimeBasedTriggeringPolicy,SizeBasedTriggeringPolicy和DefaultRolloverStrategy,其中Max文件为50.但是回滚文件在7个文件后被覆盖。 以下是我的配置

<Appenders>
    <Routing name="ServerLogs">
        <Routes pattern="$${ctx:logRouter}/">
            <Route>
                <RollingFile name="ServerLogs" immediateFlush="false" append="false"
                    fileName="${loghome}/${ctx:logRouter}/ServerLogs.log"
                    filePattern="${loghome}/${ctx:logRouter}/%d{dd-MM-yyyy}-ServerLogs-%i.log.gz">
                    <PatternLayout>
                        <Pattern>%d %p %-40C{1.} [%t] %m %ex%n</Pattern>
                    </PatternLayout>
                    <Policies>
                        <TimeBasedTriggeringPolicy interval="1"
                            modulate="true" />
                        <SizeBasedTriggeringPolicy size="4 MB" />
                        <DefaultRolloverStrategy max="50"/>
                    </Policies>
                </RollingFile>
            </Route>
        </Routes>
    </Routing>
</Appenders>

<Loggers>
    <AsyncLogger name="AsyncServerLogs" level="TRACE" includeLocation="false">
        <AppenderRef ref="ServerLogs"/>
    </AsyncLogger>      
    <Root level="DEBUG"  includeLocation="false">
        <AppenderRef ref="ServerLogs" level="TRACE" />
    </Root>
</Loggers>

我错过了任何配置吗?

1 个答案:

答案 0 :(得分:6)

您的<DefaultRolloverStrategy max="50"/>元素位置错误。

它不是一项政策,因此它不属于<Policies>元素。实际上,您甚至可能会在日志中看到以下内容:

ERROR Policies has no parameter that matches element DefaultRolloverStrategy

将其向上移动一级,使其成为<RollingFile>元素的直接子级。