如何在Spring Boot测试中启用指定日志工厂并实现JUL转SLF4J
日志测试场景下的JUL到SLF4J重定向配置
场景配置要求
在日志测试场景中,需激活LogbackLoggingSystem处理器或对应的工厂,相关配置如下:
# Logging Systems org.springframework.boot.logging.LoggingSystemFactory=\ org.springframework.boot.logging.logback.LogbackLoggingSystem.Factory,\ org.springframework.boot.logging.log4j2.Log4J2LoggingSystem.Factory,\ org.springframework.boot.logging.java.JavaLoggingSystem.Factory
编写的测试代码
@ExtendWith(SpringExtension.class) @ContextConfiguration( initializers = {ConfigDataApplicationContextInitializer.class}) @Slf4j public class MyAppTest { @Test void my() { log.info("OK"); } }
核心需求
希望在测试期间Spring Boot能激活JUL到SLF4J的重定向,需在测试前调用SLF4JBridgeHandler.install()方法。
问题排查与衍生
经排查,LoggingSystemFactory由LoggingApplicationListener实例化,因此衍生问题:如何在Spring测试上下文中指定使用LoggingApplicationListener?
已实现的解决方案
通过另一种方式实现了目标——在应用启动时通过系统属性java.util.logging.config.class配置JUL日志。该方案独立于Spring,不会污染main()或@Configuration,但需在命令行添加额外属性。
内容的提问来源于stack exchange,提问作者gavenkoa
相关产品推荐
相关产品推荐

