Log4j2 - 除Spring之外的调试级日志记录

时间:2014-10-14 16:42:31

标签: java spring log4j log4j2

我希望我的应用程序在调试级别运行,但Spring除外,它会生成大量的日志记录语句,这使得难以通读日志。我目前配置了我的Log4j2文件:

<Configuration status="debug">
    <Appenders>
        <RollingFile name="systemLog" fileName="C:/test/logs/system.log" includeLocation="true"
                    filePattern=""C:/test/logs/system-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout pattern="%d{ISO8601} - %-5level [%t] %C %M %m%n" />
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="15 MB"/>
            </Policies>
        </RollingFile>
        <Async name="systemAsyncAppender" includeLocation="true">
            <AppenderRef ref="systemLog" />
        </Async>
    </Appenders>
    <Loggers>
        <SpringLogger name="org.springframework.*" level="error" additivity="false">
            <AppenderRef ref="systemAsyncAppender" />
        </SpringLogger>
        <Root level="debug" includeLocation="true">
            <AppenderRef ref="systemAsyncAppender" />
        </Root>
    </Loggers>
</Configuration>

我认为设置SpringLogger会将Spring设置为仅在ERROR级别运行,并且写入与其他所有内容相同的日志,但我仍然看到完整的Spring DEBUG输出。我有一些模糊的记忆,能够使用旧的log4j.properties文件轻松完成这些操作(我认为它就像log4j.category.org.springframework=ERROR一样简单),但我不确定如何使用Log4J2。< / p>

(使用Log4J2 2.0.2,spring 3.2.11)

1 个答案:

答案 0 :(得分:10)

我不认为log4j2有Spring的任何特殊配置,所以<SpringLogger>在这里看起来不合适。

相反,只需声明一个常规记录器

<logger name="org.springframework" level="error" additivity="false">
    ...
</logger>

另请注意记录器名称。这些是分层的。你不需要*(我认为它实际上打破了它。)