我有一个类存储,其中包含"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
级别,因此低于此级别的消息(如DEBUG
、INFO
或WARN
(将被丢弃。
您可以更改所有未显式配置的记录器从中继承的rootLogger
配置,就像在其他log4j.properties
中一样,或者为您的软件包定义一个记录器,将其设置为DEBUG
(或您想要的任何级别(并使用两个附录:log4j.logger.my.package.here=DEBUG, Console, file
。
更多阅读资源: - log4j v1.2 成 - 日志4j 1.2 配置
PS:请注意,有时 Eclipse 在文件系统更改方面存在问题,并且不会自动更新项目文件。如果发生这种情况。运行测试后,尝试在"Navigator
"视图中右键单击项目,然后选择"刷新",然后滚动到 PoM 所在的末尾。或者打开您选择的文件资源管理器,转到磁盘上的项目根目录,您应该会看到testlog.log
文件。