Java – how to set the spring logging level during testing?

See English answers > spring boot test ignores logging Level 6

I have application. In my project root directory properties:

logging.level.root=INFO

This can control logging when spring starts the application and can run at normal run time

However, whenever I run any junit4 test, I will be sent spam by the page output by debug, as shown below:

....
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'
....

All these spam messages are almost impossible to see the actual relevant part How do I apply logging levels to test output?

I don't explicitly set any logging, and I use logback by default according to the document

Solution

From a general point of view, you can provide a separate logback - Test at the test resource level XML file In this file, you can add settings about the log level for the output you want, for example:

<?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>

I hope this will help you reduce the path of log output More information is recorded on logback's own page:

https://logback.qos.ch/manual/configuration.html

It mentions at the top:

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>