java - Log4j 显示级别不正确的消息

标签 java log4j

我正在寻找一个记录器配置,它可以输出从某个包到文件的所有内容以及 WARN 和更高级别的消息到控制台。为了实现这一点,我编写了以下 log4j.xml 文件:

<?xml version="1.0" encoding="UTF-8" ?>

<appender name="DIAGAPPDENDER" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="${rpt.trace}/diagnostic.log"/>
</appender> 

<appender name="ROOTAPPENDER" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout"> 
</appender>

<logger name="rpt.diagnostic">
    <level value ="ALL" />
    <appender-ref ref="DIAGAPPDENDER"/> 
</logger>

<root>
    <priority value ="WARN" />
    <appender-ref ref="ROOTAPPENDER" /> 
</root>

但是,所有级别的日志消息不仅出现在文件中,而且出现在控制台中,这不是我需要的。我错过了什么? 谢谢。保罗。

最佳答案

很简单。您可以将 param threshold 添加到您的 console appender 并设置将显示级别值等于或高于该级别的消息的任何级别。

<?xml version="1.0" encoding="UTF-8" ?>

<appender name="DIAGAPPDENDER" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="${rpt.trace}/diagnostic.log"/>
</appender> 

<appender name="ROOTAPPENDER" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="Threshold" value="WARN" /> 
</appender>

<logger name="rpt.diagnostic">
    <level value ="ALL" />
    <appender-ref ref="DIAGAPPDENDER"/> 
</logger>

<root>
    <priority value ="WARN" />
    <appender-ref ref="ROOTAPPENDER" /> 
</root>

关于java - Log4j 显示级别不正确的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14727742/

相关文章:

java - JComboBox 返回值

java - 我能否以编程方式找到句柄在 JTree 行中的位置?

java - UUID 列中的 NULL 值

java - 在 PUB/SUB 模型中消费来自 RabbitMQ 的消息

java - Log4j 跟踪级别中没有行号

java - 从 RecyclerView 中删除时如何修复项目的重复?

java - 如何在 Eclipse 中使用 Java 与 Fuseki 交互

spring - spring boot的logging.config配置

java - 如何使用 less logger.isDebugEnabled()

java - log4j 附加程序之间的依赖关系