在使用一个类之前,日志记录运行良好,但是在我添加第二个 Java 类之后,它在第二个类中记录了两次。谁能帮我,如何让它只记录一次。问题似乎出在这个 log4j.xml 文件中,因为如果我注释掉appender,它会记录一次,但我不想充分更改log4j中的代码,因为这样我担心日志记录将无法在一等奖。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: [%d{MMM-dd HH:mm:ss,SSS}] %c{3} - %m%n"/>
</layout>
</appender>
<appender name="FILE" class="org.apache.log4j.FileAppender">
<param name="file" value="/user/Dave/log.out"/>
<param name="immediateFlush" value="true"/>
<param name="threshold" value="debug"/>
<param name="append" value="false"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: [%d{MMM-dd HH:mm:ss,SSS}] %c{3} - %m%n"/>
</layout>
</appender>
<logger name="com.asaqa.score">
<level value="all"/>
</logger>
<!-- Root Logger -->
<root>
<priority value="error"/>
<appender-ref ref="console"/>
</root>
</log4j:configuration>
最佳答案
默认情况下,记录器继承附加程序,每个附加程序都会创建日志条目。在您的情况下,“com.asaqa.score”记录器继承自root。您可以通过将 additivity
设置为 false
来关闭此功能。您应该完成记录器的配置以包含附加程序
<logger name="com.asaqa.score" additivity="false">
<level value="all"/>
<appender-ref ref="console"/>
</logger>
此外,下面的错误表明您正在使用旧版本的 log4j。您可能需要考虑升级到 log4j 2 。事实上,它是recommended by Apache themselves .
On August 5, 2015 the Logging Services Project Management Committee announced that Log4j 1.x had reached end of life. For complete text of the announcement please see the Apache Blog. Users of Log4j 1 are recommended to upgrade to Apache Log4j 2.
执行此操作时,请注意有 some changes to the config syntax .
关于java - Log4j 打印到控制台两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43591781/