如何为SpringJUnit4ClassRunner配置log4j.properties?

2022-08-31 14:42:05

突然之间,这种情况在JUnit测试期间不断发生。一切都在工作,我写了一些新的测试,并发生了这个错误。如果我恢复它,它不会消失。为什么?

log4j:WARN No appenders could be found for logger (org.springframework.test.context.junit4.SpringJUnit4ClassRunner).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

答案 1

您编写的新测试(直接或间接)使用使用Log4j进行记录的类

需要配置 Log4J 才能使此日志记录正常工作。

log4j.properties(或 log4j.xml) 文件放在测试类路径的根目录中

它应该有一些基本配置,例如

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1

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

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

# An alternative logging format:
# log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1} - %m%n

默认情况下,追加器输出到控制台,但您也可以显式设置目标,如下所示:

log4j.appender.A1.Target=System.out

这会将所有输出以良好的格式重定向到控制台。更多信息可以在Log4J手册中找到,

然后,Log4J 日志记录将被正确配置,此警告将消失。


答案 2

如果您不想打扰文件,可以在代码中执行类似如下操作:

static
{
    Logger rootLogger = Logger.getRootLogger();
    rootLogger.setLevel(Level.INFO);
    rootLogger.addAppender(new ConsoleAppender(
               new PatternLayout("%-6r [%p] %c - %m%n")));
}

推荐