在带有测试配置文件的springboot项目中使用log4j2, org.slf4j.LoggerFactory.getLogger("")
可以获取测试配置文件loggercontext并从中读取配置 log4j2-test.xml
.
但是 org.slf4j.LoggerFactory.getILoggerFactory().getLogger("")
只能从中获取当前loggercontext和读取配置 log4j2.xml
.
LoggerFactory.getLogger("xxx"); // log4j2-test.xml
LoggerFactory.getILoggerFactory().getLogger("xxx"); // log4j2.xml
是log4j2的bug吗?
我测试过了 LoggerFactory.getILoggerFactory().getLogger("")
使用logback,logback可以选择 log4j2-test.xml
适当地。
springboot版本: 2.4.5
1条答案
按热度按时间kx7yvsdv1#
不,这不是log4j中的bug。log4j对spring配置文件一无所知,也没有将它们合并到其定位配置文件的逻辑中。
loggerfactory中调用的方法是静态的。这意味着它们是由slf4j实现的。slf4j源代码显示getlogger(“”)没有
这与您在第二次通话中手动执行的操作完全相同,因此我看不出它们之间有什么区别。
我还怀疑logback是否能够正确选择log4j2-test.xml,因为这对于logback来说是一个无效的配置文件。