无法通过Log4j2.xml屏蔽MongoDB连接日志(Ktor应用)
解决Ktor中无法禁用MongoDB连接日志的问题
问题描述
尝试在Ktor服务器应用中禁用MongoDB连接日志,使用了以下log4j2.xml配置,但未生效:
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="INFO"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> </Appenders> <Loggers> <Root level="debug"> <AppenderRef ref="Console"/> </Root> <Logger name="org.mongodb.driver" level="OFF"/> </Loggers> </Configuration>
应用的日志相关依赖如下:
dependencies { implementation 'org.slf4j:slf4j-simple:2.0.5' implementation 'org.slf4j:slf4j-api:2.0.5' implementation 'org.apache.logging.log4j:log4j-core:2.19.0' }
问题原因
依赖冲突导致SLF4J未使用log4j2作为日志后端:同时引入了slf4j-simple和log4j-core,SLF4J会默认绑定到slf4j-simple,完全忽略你的log4j2配置文件。
解决方案
- 移除
slf4j-simple依赖:它是SLF4J的轻量实现,会与log4j2产生绑定冲突。 - 添加log4j2与SLF4J的绑定依赖:让SLF4J将所有日志请求转发给log4j2处理。
修改后的依赖配置:
dependencies { implementation 'org.slf4j:slf4j-api:2.0.5' implementation 'org.apache.logging.log4j:log4j-core:2.19.0' // 新增SLF4J到log4j2的绑定依赖,版本需与log4j-core保持一致 implementation 'org.apache.logging.log4j:log4j-slf4j-impl:2.19.0' }
- 确认配置文件位置:确保
log4j2.xml放在项目的src/main/resources目录下,log4j2启动时才能自动加载该配置。
完成以上修改后,org.mongodb.driver的日志级别设置为OFF就会生效,MongoDB的连接日志将不再输出。
内容的提问来源于stack exchange,提问作者Vishal Jain
相关产品推荐
相关产品推荐

