Spring Boot Test ignores logging.level

后端 未结 6 758
独厮守ぢ
独厮守ぢ 2020-12-13 01:59

One of my maven module ignores my logging levels when running tests.

In src/test/resources I have application.properties:

app         


        
相关标签:
6条回答
  • 2020-12-13 02:15

    I'm also looking for a solution to that, meanwhile I'm using the following solution:

    this isn't the best but it works

    @BeforeClass
    public static void setErrorLogging() {
       LoggingSystem.get(ClassLoader.getSystemClassLoader()).setLogLevel(Logger.ROOT_LOGGER_NAME, LogLevel.ERROR);
    }
    

    LoggingSystem: a common abstraction over logging systems.

    ->

    get: Detect and return the logging system in use. Supports Logback and Java Logging

    setLogLevel: Sets the logging level for a given logger.

    Make sure to change back log level for all other test classes.

    Hope it helps you, goodluck

    0 讨论(0)
  • 2020-12-13 02:18

    To enable application.properties need to add an annotation @SpringBootTest to test class, read more here.

    0 讨论(0)
  • 2020-12-13 02:18

    Try this:

    @ContextConfiguration(classes = ApplicationImportBackend.class, 
        initializers = ConfigFileApplicationContextInitializer.class)
    @RunWith(SpringJUnit4ClassRunner.class)
    @ActiveProfiles({ "test" })
    public class BatchJobConfigurationTests {
        //...
    }
    
    0 讨论(0)
  • 2020-12-13 02:25

    If your tests are annotated with @DataJpaTest you can switch Hibernate SQL logging off with:

    @DataJpaTest(showSql=false)
    public class MyTest {
      ..
    }
    
    0 讨论(0)
  • 2020-12-13 02:30

    Okay what I did now, in all modules I configured as follows:

    src/main/resources:
    I use logging configuration in application.properies like logging.level.* as described in the question.

    src/test/resources:
    I use logback-test.xml like:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <include resource="org/springframework/boot/logging/logback/base.xml" />
        <logger name="*.myapp" level="error" />
        <logger name="org.springframework.core " level="error" />
        <logger name="org.springframework.beans" level="error" />
        <logger name="org.springframework.context" level="error" />
        <logger name="org.springframework.transaction" level="error" />
        <logger name="org.springframework.web" level="error" />
        <logger name="org.springframework.test" level="error" />
        <logger name="org.hibernate" level="error" />
    </configuration>
    

    But I still don't understand, why in few modules I could use application.properties, but in another module it ignores ... But for now it works for me as it is.

    But maybe few hints with background knowledge are still welcome.

    I dont mark my answer as solution, cos it still feels like a workaround.

    0 讨论(0)
  • 2020-12-13 02:41
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <include resource="org/springframework/boot/logging/logback/base.xml" />
        <logger name="org.springframework" level="INFO"/>
    </configuration>
    

    As a fast fix, I put logback.xml file with the above content in src/test/resources and it works.

    0 讨论(0)
提交回复
热议问题