如何调整io.micronaut日志级别?Java 17 Gradle测试场景求助
解决Micronaut测试时DEBUG日志泛滥的问题
统一日志依赖,避免冲突
检查Gradle测试依赖,确保使用的日志实现(如Log4j2)没有和Micronaut自带的日志组件冲突,排除冗余依赖:testImplementation("io.micronaut.test:micronaut-test-junit5") { exclude group: "org.slf4j", module: "slf4j-simple" } testImplementation("org.apache.logging.log4j:log4j-slf4j-impl:2.20.0") testImplementation("org.apache.logging.log4j:log4j-core:2.20.0")使用测试专用日志配置文件
在src/test/resources下创建log4j2-test.xml(测试阶段会优先加载该文件),直接指定io.micronaut的日志级别:<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> </Appenders> <Loggers> <Logger name="io.micronaut" level="INFO" additivity="false"> <AppenderRef ref="Console"/> </Logger> <Root level="INFO"> <AppenderRef ref="Console"/> </Root> </Loggers> </Configuration>注意:不要通过
application.yml配置Log4j2的日志级别,测试专用日志文件优先级更高。修正运行时修改日志级别的代码
原代码的强制类型转换可能因日志实现不同失效,针对Log4j2使用对应API修改级别:import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.config.Configuration; import org.junit.jupiter.api.BeforeEach; @BeforeEach void setUp() { LoggerContext context = (LoggerContext) LogManager.getContext(false); Configuration config = context.getConfiguration(); // 调整io.micronaut的日志级别为INFO config.getLoggerConfig("io.micronaut").setLevel(org.apache.logging.log4j.Level.INFO); // 若需关闭根日志,可启用下面一行 // config.getRootLogger().setLevel(org.apache.logging.log4j.Level.OFF); context.updateLoggers(config); }检查Gradle测试任务配置
确保build.gradle的test任务没有强制设置日志参数,避免覆盖配置文件:test { useJUnitPlatform() // 移除类似如下的强制日志配置 // jvmArgs "-Dorg.slf4j.simpleLogger.defaultLogLevel=debug" }
内容的提问来源于stack exchange,提问作者Mikhail Poda
相关产品推荐
相关产品推荐

