내 maven 모듈 중 하나는 테스트를 실행할 때 내 로깅 수준을 무시합니다.
에서 src/test/resources
I 있습니다 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
작동합니다.
답변
답변
나는 또한 그것에 대한 해결책을 찾고 있는데, 한편 다음 해결책을 사용하고 있습니다.
이것은 최고는 아니지만 작동합니다.
@BeforeClass
public static void setErrorLogging() {
LoggingSystem.get(ClassLoader.getSystemClassLoader()).setLogLevel(Logger.ROOT_LOGGER_NAME, LogLevel.ERROR);
}
LoggingSystem
: 로깅 시스템에 대한 일반적인 추상화입니다.
->
get
: 사용중인 로깅 시스템을 감지하여 반환합니다. Logback 및 Java 로깅 지원
setLogLevel
: 주어진 로거에 대한 로깅 수준을 설정합니다.
다른 모든 테스트 클래스에 대한 백 로그 수준을 변경해야합니다.
도움이 되었기를 바랍니다.
답변
테스트에 주석이 달린 경우 다음을 사용하여 @DataJpaTest
Hibernate SQL 로그 오프를 전환 할 수 있습니다.
@DataJpaTest(showSql=false)
public class MyTest {
..
}
답변
이 시도:
@ContextConfiguration(classes = ApplicationImportBackend.class,
initializers = ConfigFileApplicationContextInitializer.class)
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles({ "test" })
public class BatchJobConfigurationTests {
//...
}