java - Log4j 打印到控制台两次

标签 java selenium logging

在使用一个类之前,日志记录运行良好,但是在我添加第二个 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/

相关文章:

java - Log4j - 让多个 appender 写入同一个文件,其中一个始终记录

JavaScript 控制台日志在 if 语句评估为 false 后自行清除

java 哈希对象

java - 为什么关键字 "transient"对Java中的Servlet HTTPSession没有影响?

java - 如何在不断移动的图像上记录鼠标事件?

java - org.openqa.selenium.ElementNotVisibleException : Element is not currently visible while clicking a checkbox through SeleniumWebDriver and Java

ruby - 使用 Selenium Ruby Webdriver 比较两个图像

java - 匿名内部类显示不正确的修饰符

internet-explorer - Selenium 2.0 WebDriver IE8 findelement by xpath 无法评估

python - Celery 从 Django 模块内部记录到文件