【问题标题】:Why wasn't log message written my log file when running Junit tests?为什么在运行 Junit 测试时没有将日志消息写入我的日志文件?
【发布时间】:2017-07-09 17:18:31
【问题描述】:

我有一个类 Store,其中包含“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

【问题讨论】:

  • 这是一个什么样的项目,例如maven、gradle、basic eclipse/intellij java项目等等?你的测试类路径中有log4j.properties 吗?
  • @Morfic,它是 Eclipse 中的一个 Maven 项目。是的,我在 src/test/resources 文件夹下有一个 log4j.properties。
  • 您可以使用它为您的测试自定义日志配置吗?它是什么样子的,也许它只定义了一个控制台附加程序?
  • @Morfic,请看src/test/resources下的日志文件。

标签: java logging junit log4j slf4j


【解决方案1】:

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

尽管如此,file appender 没有被引用,所以消息只会使用Console appender 来记录。但是,您的rootLogger 设置为ERROR 级别,因此低于此级别的消息,例如DEBUGINFOWARN 将被丢弃。

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

更多阅读资源: - log4j v1.2 into - log4j 1.2 configuration

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

【讨论】:

    猜你喜欢
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 2021-11-11
    相关资源
    最近更新 更多