[logging] Spring Boot Test는 logging.level을 무시합니다.

내 maven 모듈 중 하나는 테스트를 실행할 때 내 로깅 수준을 무시합니다.

에서 src/test/resourcesI 있습니다 application.properties:

app.name=bbsng-import-backend
app.description=Import Backend Module for Application
spring.profiles.active=test

# LOGGING
logging.level.root=error
logging.level.org.springframework.core =fatal
logging.level.org.springframework.beans=fatal
logging.level.org.springframework.context=fatal
logging.level.org.springframework.transaction=error
logging.level.org.springframework.test=error
logging.level.org.springframework.web=error
logging.level.org.hibernate=ERROR

나는 또한 시도했다 application-test.properties.

내 응용 프로그램은 특히 컨텍스트를로드 할 때 많이 기록합니다. 나는 시도 logback.xml, logback-test.xml그리고 logback-spring.xml아무것도 도움이되지 않습니다.

내 pom :

<parent>
    <groupId>at.company.bbsng</groupId>
    <artifactId>bbsng-import</artifactId>
    <version>0.1.0-SNAPSHOT</version>
</parent>

<artifactId>bbsng-import-backend</artifactId>
<name>bbsng-import-backend</name>

<properties>
    <start-class>at.company.bbsng.dataimport.ApplicationImportBackend</start-class>
</properties>


<dependencies>

    <!-- APPLICATION ... -->
    <dependency>
        <groupId>at.company.bbsng</groupId>
        <artifactId>bbsng-app-domain</artifactId>
        <scope>test</scope>
    </dependency>

    <!-- SPRING ... -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-batch</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
        <scope>test</scope>
    </dependency>

    <!-- JAVAX ... -->
       ...

    <!-- COMMONS ... -->
       ...

    <!-- LOMBOK ... -->
       ...

    <!-- DB -->
       ...

</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${org.springframework.boot-version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

하나의 간단한 테스트 클래스 :

@ContextConfiguration(classes = { ApplicationImportBackend.class })
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles({ "test" })
public class BatchJobConfigurationTests {

    @Autowired
    private JobLauncher jobLauncher;

    @Test
    public void testSimpleProperties() throws Exception {
        assertNotNull(jobLauncher);
    }

}

애플리케이션 로그가 DEBUG 모드에 있습니다.

그리고 예, application.properties로드됩니다. 이미 잘못된 구성으로 응용 프로그램을 중단하려고했습니다.

힌트를 주셔서 감사합니다.



답변

좋아, 내가 한 모든 모듈에서 다음과 같이 구성했습니다.

SRC / 메인 / 자원 :
나는 로깅 구성을 사용 application.properies같은 logging.level.*질문에 설명 된대로.

src / test / resources : 다음 과 같이
사용합니다 logback-test.xml.

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

하지만 여전히 이해가 안되는데 왜 몇 개의 모듈에서 application.properties를 사용할 수 있었지만 다른 모듈에서는 무시합니다 …하지만 지금은 그대로 작동합니다.

그러나 배경 지식이있는 몇 가지 힌트는 여전히 환영합니다.

내 대답을 해결책으로 표시하지 않습니다. 여전히 해결 방법처럼 느껴지기 때문입니다.


답변

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <logger name="org.springframework" level="INFO"/>
</configuration>

빠른 수정으로 logback.xml위의 내용이있는 파일을 넣으면 src/test/resources작동합니다.


답변

테스트 클래스에 application.properties주석을 추가 할 필요가 있도록하려면 여기를@SpringBootTest 참조 하십시오 .


답변

나는 또한 그것에 대한 해결책을 찾고 있는데, 한편 다음 해결책을 사용하고 있습니다.

이것은 최고는 아니지만 작동합니다.

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

LoggingSystem: 로깅 시스템에 대한 일반적인 추상화입니다.

->

get: 사용중인 로깅 시스템을 감지하여 반환합니다. Logback 및 Java 로깅 지원

setLogLevel: 주어진 로거에 대한 로깅 수준을 설정합니다.

다른 모든 테스트 클래스에 대한 백 로그 수준을 변경해야합니다.

도움이 되었기를 바랍니다.


답변

테스트에 주석이 달린 경우 다음을 사용하여 @DataJpaTestHibernate SQL 로그 오프를 전환 할 수 있습니다.

@DataJpaTest(showSql=false)
public class MyTest {
  ..
}


답변

이 시도:

@ContextConfiguration(classes = ApplicationImportBackend.class,
    initializers = ConfigFileApplicationContextInitializer.class)
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles({ "test" })
public class BatchJobConfigurationTests {
    //...
}


답변