我的Spring Boot测试堆栈是Maven + Surefire + JUnit4。我用@RunWith(SpringJUnit4ClassRunner.class)
注释了测试。
我的项目根目录中有application.properties
这行:
logging.level.root=INFO
这可以控制运行Spring启动应用程序时的日志记录,并且可以正常运行。
但是,每当我运行任何JUnit4测试时,我都被这样的DEBUG输出页面发送垃圾邮件:
....
17:43:20.500 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Returning cached instance of singleton bean 'autoConfigurationReport'
17:43:20.500 [main] DEBUG org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader - Registered bean definition for imported class 'org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperConfiguration'
17:43:20.501 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Returning cached instance of singleton bean 'org.springframework.boot.autoconfigure.condition.BeanTypeRegistry'
17:43:20.502 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Returning cached instance of singleton bean 'autoConfigurationReport'
....
所有这些垃圾邮件几乎不可能看到实际相关的部分。如何应用日志记录级别来测试输出?
我没有明确设置任何日志记录,并且根据文档默认使用Logback。
答案 0 :(得分:11)
从一般情况来看,您可以在测试资源级别提供单独的logback-test.xml
- 文件。在此文件中,您可以添加有关针对您想要的输出的日志级别的设置,例如:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
</layout>
</appender>
<logger name="com.your.package" level="DEBUG">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.springframework" level="WARN">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.hibernate" level="WARN">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.eclipse" level="WARN">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="jndi" level="WARN">
<appender-ref ref="CONSOLE"/>
</logger>
<logger name="org.apache.http.wire" level="WARN">
<appender-ref ref="CONSOLE"/>
</logger>
<root level="DEBUG">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
希望这有助于您减少日志输出的路径。更多内容记录在logback自己的页面中:
https://logback.qos.ch/manual/configuration.html
在顶部提到:
让我们首先讨论尝试配置自身后面的logback的初始化步骤: 1.Logback尝试在类路径中找到一个名为logback-test.xml的文件。
2.如果没有找到这样的文件,logback会尝试在类路径中找到一个名为logback.groovy的文件。
3.如果找不到这样的文件,它会检查类路径中的文件logback.xml。
4.如果没有找到这样的文件,则通过查找文件META-INF,使用服务提供者加载工具(在JDK 1.6中引入)来解析com.qos.logback.classic.spi.Configurator接口的实现。类路径中的\ services \ ch.qos.logback.classic.spi.Configurator。其内容应指定所需Configurator实现的完全限定类名。
5.如果以上都不成功,则logback会自动使用BasicConfigurator自行配置,这将导致日志记录输出定向到控制台。