我的一个maven模块在运行测试时忽略了我的日志记录级别。
在src/test/resources
中,有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>
一个简单的Test类:
@ContextConfiguration(classes = { ApplicationImportBackend.class })
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles({ "test" })
public class BatchJobConfigurationTests {
@Autowired
private JobLauncher jobLauncher;
@Test
public void testSimpleProperties() throws Exception {
assertNotNull(jobLauncher);
}
}
应用程序日志处于调试模式。
是的,application.properties
将被加载。我已经尝试通过错误的配置来破坏应用程序。
谢谢你的任何提示。
7条答案
按热度按时间ie3xauqp1#
好了,我现在做了什么,在所有模块中,我配置如下:
src/main/resources:
我在
application.properies
中使用日志配置,如问题中所述。src/test/resources:
我使用
logback-test.xml
如下:但我还是不明白,为什么在一些模块中我可以使用application.properties,但在另一个模块中它忽略了...但现在它对我很有效。
但也许一些背景知识的提示仍然是受欢迎的。
我不把我的答案标记为解决方案,因为它仍然感觉像一个变通方案。
pobjuy322#
作为一个快速修复,我把
logback.xml
文件与上述内容在src/test/resources
和它的工作。b1payxdu3#
要启用
application.properties
,需要在测试类中添加一个注解@SpringBootTest
,请在此处阅读更多内容。kupeojn64#
我也在寻找解决方案,同时我使用以下解决方案:
这不是最好的,但它的工作
LoggingSystem
:日志系统的通用抽象。->
get
:检测并返回正在使用的日志记录系统。支持Logback和Java日志记录setLogLevel
:设置给定日志记录器的日志记录级别。确保更改所有其他测试类的日志级别。
希望对你有帮助,祝你好运
k4ymrczo5#
如果你的测试是用
@DataJpaTest
注解的,你可以用以下命令关闭Hibernate SQL日志:new9mtju6#
试试这个:
vhipe2zx7#
根据教程,您可以将***logback.xml***文件添加到*src/test/resources*目录中
如果您需要对logback应用自定义,而不是使用www.example.com可以实现的自application.properties,则需要添加标准logback配置文件。您可以将一个logback.xml文件添加到类路径的根目录,以便logback查找。如果你想使用Sping Boot Logback扩展,你也可以使用logback-spring.xml。
logback.xml文件的示例: