看起来这个问题已经被问过很多次了。但是我尝试过的所有解决方案(主要是确保 log4j.properties 文件位于正确的位置并且输入正确)在我的情况下都不起作用。
我有一个 Maven 项目。我想使用 log4j 进行测试。测试类使用 src/main/java 中定义的辅助方法,其中使用了记录器。
在我的助手类中(在 src/main/java/ 中)我已经导入
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
我已经实例化了记录器
private static final String TAG = Helper.class.getSimpleName();
private static final Logger logger = LoggerFactory.getLogger(TAG);
我在 src/main/resources 和 src/test/resources 中都包含了以下 log4j.properties 文件
### set log levels - for more verbose logging change 'info' to 'debug' ###
### Also add logfile to the root, if need stdout then add stdout appender here###
log4j.rootLogger=debug, stdout
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{dd-mm HH:mm:ss,SSS} %p/%c{1}:%L - %m%n
在我的 POM 中,我包含了对 slf4j 的依赖
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
在我的助手类的代码中,我以这种方式使用记录器
logger.debug("logger test...");
控制台中未打印任何消息,我收到以下警告消息
log4j:WARN No appenders could be found for logger (Helper).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
我错过了什么?
更新
该问题与将 log4j.configuration 属性设置为 log4j-test.xml 的项目选项有关。我已将以下插件添加到项目 maven pom 中,这解决了问题。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14.1</version>
<configuration>
<systemPropertyVariables>
<log4j.configuration>log4j.properties</log4j.configuration>
</systemPropertyVariables>
</configuration>
</plugin>