gpt4 book ai didi

java - JUnit 测试期间重复的 log4j 输出

转载 作者:行者123 更新时间:2023-11-30 08:13:31 25 4
gpt4 key购买 nike

我们已经使用以下 log4j.properties 文件实现了一个 log4j 控制台记录器:

# Set root logger level to info and its only appender to default.
log4j.rootCategory=INFO, default

# default is set to be a ConsoleAppender.
log4j.appender.default=org.apache.log4j.ConsoleAppender

# default uses PatternLayout.
log4j.appender.default.layout=org.apache.log4j.PatternLayout
log4j.appender.default.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

log4j.logger.org.hibernate=error

虽然在 eclipse 中正常执行程序一切正常,但是当我们开始我们的 JUnit 测试之一时,它也调用带有记录器的部分程序,我们总是在 eclipse 上得到重复的记录器输出安慰。尽管它不会影响我们的测试,但如果它们不被复制,我们仍然可以更容易地阅读记录器信息。

这是我们首次使用 log4j 的配置方式:

public ConsoleTextLogger(final Class<?> clazz) {
super();
this.logger = Logger.getLogger(clazz.getName());
// loads the configuration file and configures the log4j logging framework
if (LOGGERLOGGER == null) {
URL url = getClass().getResource("log4j.properties");
PropertyConfigurator.configure(url);
}
}

这就是我们在一个 JUnit 类中使用记录器的方式:

public class TestClass1 {
@BeforeClass
public static void setup() {
TestSetupUtility.loadPath();
}

// TESTS
}

TestSetupUtility 设置不同测试所需的一切。

public class TestSetupUtility {
/**
* Class specific Logger.
*/
protected static final ConsoleTextLogger LOGGER = new ConsoleTextLogger(TestSetupUtility.class);
}

关于什么可能导致这种现象的任何想法以及为什么仅在运行 JUnit 测试时?在此先感谢您的帮助或指点。

最佳答案

好的,我现在发现了问题......在 JUnit 测试期间,我将记录器级别切换为 Level.DEBUG 并且负责切换记录器级别的方法调用了以下方法 BasicConfigurator.configure(); 创建第二个基本记录器。删除此方法调用后,重复的日志记录消失了。

关于java - JUnit 测试期间重复的 log4j 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29930159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com