为什么运行 Junit 测试时没有写入我的日志文件的日志消息?



我有一个类存储,其中包含"log.info(...("之类的语句。我可以看到运行程序时创建的日志文件的日志消息。但是,当我运行 JUnit 测试时,不会创建日志文件,但我仍然希望看到日志消息。记录器是:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

我的 log4j 属性:

log4j.rootLogger=DEBUG, STDOUT, file
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=mylogs.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{dd-MM-yyyy HH:mm:ss} %-5p %c{1}:%L - %m%n

问题是,如何在运行 Junit 测试时创建日志文件和日志消息?

编辑:

测试日志属性的一部分:

log4j.rootLogger=ERROR, Console
log4j.logger.play=DEBUG
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %-5p ~ %m%n
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=testlog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{dd-MM-yyyy HH:mm:ss} %-5p %c{1}:%L - %m%n

根据该配置,您可能希望在项目的根目录中有一个testlog.log文件。

尽管如此,不会引用file追加器,因此将仅使用Console追加器记录消息。但是,您的rootLogger设置为ERROR级别,因此低于此级别的消息(如DEBUGINFOWARN(将被丢弃。

您可以更改所有未显式配置的记录器从中继承的rootLogger配置,就像在其他log4j.properties中一样,或者为您的软件包定义一个记录器,将其设置为DEBUG(或您想要的任何级别(并使用两个附录:log4j.logger.my.package.here=DEBUG, Console, file

更多阅读资源: - log4j v1.2 成 - 日志4j 1.2 配置

PS:请注意,有时 Eclipse 在文件系统更改方面存在问题,并且不会自动更新项目文件。如果发生这种情况。运行测试后,尝试在"Navigator"视图中右键单击项目,然后选择"刷新",然后滚动到 PoM 所在的末尾。或者打开您选择的文件资源管理器,转到磁盘上的项目根目录,您应该会看到testlog.log文件。

相关内容

  • 没有找到相关文章

最新更新