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

标签 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 设置为仅在错误级别运行,并且与其他所有内容写入相同的日志,但我仍然看到完整的 Spring DEBUG 输出。我模糊地记得能够使用旧的 log4j.properties 文件轻松地完成此操作(我认为它就像 log4j.category.org.springframework=ERROR 一样简单),但我不确定如何使用 Log4J2 执行此操作。

(使用 Log4J2 2.0.2,spring 3.2.11)

最佳答案

我认为log4j2没有针对Spring的任何特殊配置,所以<SpringLogger>放在这里似乎不太合适。

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

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

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

关于java - Log4j2 - 除 Spring 之外的调试级别日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26365942/

相关文章:

java - 在 Android 上创建交互式等高线图

java - 从 RetrofitClient 内的 SharedPreferences 获取 BASE_URL

java - 我们如何告诉 log4j 属性文件在哪里?

java - 在 hibernate 中包含 log4j 属性文件以显示带有值而不是问号的查询

java - 在运行时减少 Java 中的最大堆栈大小

java - 求和超时如何解决?

spring - com.mongodb.MongoSocketOpenException : Exception opening socket with spring boot and mongodb cloud 异常

java - Spring Data JPA 重复条目

java - Lombok @Builder 和 JPA 默认构造函数

java - 如果没有打印日志,则停止创建日志文件