我们使用以下 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/