【发布时间】:2014-09-04 09:58:03
【问题描述】:
问题:日志在我的单元测试中没有回显任何内容。日志记录在我的应用程序中运行良好,但是当我将相同的代码移动到 test 包时,它们停止工作。 (见下面的代码)
问题:如何在我的单元测试中获取日志?
代码:
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class LogTest {
private static final Log _LOG = LogFactory.getLog(TransformerServiceTest.class);
@Test
public void testLogs() {
_LOG.info("!!!!!!!!!!!!!!!!!!"); // NEVER ECHOES TO STDOUT
}
}
更新:现在只有 _LOG.error() 有效
改为DEBUG级别后,只有ERROR级别有效
log4j.properties
# Root logger option
log4j.rootLogger=DEBUG, stdout
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
LogTest.class
public class LogTest {
private static Log _LOG = LogFactory.getLog(LogTest.class);
@Test
public void test() {
_LOG.error("Error works!"); //works
_LOG.warn("Warn works!"); //doesn't work
_LOG.info("Info works!"); // doesn't work
}
}
【问题讨论】:
-
将日志配置添加到您的测试中。如果您使用的是 maven 构建,请将日志配置放在 src/test/resources 目录中。
-
也许也显示您的配置/构建过程?除了猜测之外,这些信息不足以让我们做任何事情。
-
@DwB 谢谢!我包括 log4j.properties 并且它有效。但我不知道如何包括所有级别的日志记录。你能建议如何记录信息、警告、错误吗?
-
@sheltem 你知道如何包含所有级别的日志记录吗?你能建议如何记录信息、警告、错误吗?
-
将日志级别设置为最低值(DEBUG 或 TRACE),所有高于它的内容都会显示。
标签: java logging junit junit4 apache-commons-logging