Spring启动测试忽略logging.level

Spring启动测试忽略logging.level,logging,spring-boot,logback,ignore,Logging,Spring Boot,Logback,Ignore,我的一个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.springfr

我的一个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
我还尝试了
应用程序测试.properties

我的应用程序记录了很多日志,尤其是在加载上下文时。我尝试了
logback.xml
logback test.xml
logback-spring.xml
,但没有任何帮助

我的pom:


网址:www.company.bbsng
bbsng导入
0.1.0-SNAPSHOT
bbsng导入后端
bbsng导入后端
at.company.bbsng.dataimport.ApplicationImportBackend
网址:www.company.bbsng
bbsng应用程序域
测试
org.springframework.boot
弹簧靴起动器批次
org.springframework.boot
弹簧起动试验
测试
org.springframework.boot
spring引导启动器数据jpa
测试
...
...
...
...
org.springframework.boot
springbootmaven插件
${org.springframework.boot版本}
重新包装
一个简单的测试类:

@ContextConfiguration(类={ApplicationImportBackend.class})
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles({“测试”})
公共类BatchJobConfigurationTests{
@自动连线
私有JobLauncher JobLauncher;
@试验
public void testSimpleProperties()引发异常{
assertNotNull(作业启动器);
}
}
应用程序日志处于调试模式

是的,将加载
应用程序.properties
。我已经尝试用错误的配置破坏应用程序

谢谢你的提示。

试试这个:

@ContextConfiguration(classes=ApplicationImportBackend.class,
initializers=ConfigFileApplicationContextInitializer.class)
@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles({“测试”})
公共类BatchJobConfigurationTests{
//...
}

好的,我现在做了什么,在所有模块中,我配置如下:

src/main/resources:
我在
application.properties
中使用日志配置,就像问题中描述的
logging.level.*

src/test/resources:
我使用
logbacktest.xml
类似于:


但我仍然不明白,为什么在一些模块中我可以使用application.properties,但在另一个模块中它忽略了。。。但就目前而言,它对我是有效的

但是,也许有一些背景知识的提示仍然是受欢迎的


我不会将我的答案标记为解决方案,因为它仍然感觉像是一个解决方法。

要启用
应用程序。属性需要添加注释
@springbootest
到测试类,请阅读更多。



作为一个快速修复,我将带有上述内容的
logback.xml
文件放入
src/test/resources
中,它可以正常工作。

我也在寻找解决方案,同时使用以下解决方案:

这不是最好的,但很管用

@BeforeClass
公共静态void setErrorLogging(){
LoggingSystem.get(ClassLoader.getSystemClassLoader()).setLogLevel(Logger.ROOT\u Logger\u NAME,LogLevel.ERROR);
}
LoggingSystem
:对日志系统的常见抽象

->

get
:检测并返回正在使用的日志记录系统。支持Logback和Java日志记录

setLogLevel
: 设置给定记录器的日志记录级别

确保更改所有其他测试类的向后日志级别


希望它对您有所帮助,goodluck

如果您的测试带有
@DataJpaTest
注释,您可以通过以下方式关闭Hibernate SQL登录:

@DataJpaTest(showSql=false)
公共类MyTest{
..
}

感谢您的回复,但调试输出仍然存在。可能还有胶水吗?我的假设是
application.properties
的解析要晚于测试初始化。这就是为什么
org.springframework.test
对初始测试日志记录没有影响。这太棒了。我添加了
,以真正降低噪音。如果您使用的是swagger,还可以添加
。做得好。有赏金!虽然在我尝试添加
logback test.xml
文件后,我开始从logback本身看到一堆日志,但这很有帮助。为了关闭这些功能,我在运行测试时成功地摆脱了所有的前兆日志记录。我的
logbacktest.xml
文件就这么简单:同样的问题。具有完全相同配置(基类)的2个模块。一个在创建上下文期间有日志记录,另一个没有。application.properties(logging.level)中的更改将生效。使用上面的
logbacktest.xml
工作正常。(+1)谢谢,清洁的溶液。该文件也可以命名为“logback test.xml”,为了清晰起见,应该放在“src/test/resources”下。是的,清晰是我命名它的原因
logback text.xml
与我的答案有什么不同?这是我停止日志记录的唯一方法。谢谢,这是一段常见的代码,以防您必须在没有一堆记录器配置文件的情况下测试正在记录的内容。这非常有用。只想指出,如果使用JUnit5@SpringBootTest用于集成测试,因此将加载application.properties。但是对于单元测试,这不是正确的答案。谢谢,这是迄今为止最好的答案。非常感谢。