You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Logback配置MongoDB连接打开日志的级别?

解决MongoDB驱动连接打开日志级别不生效问题

问题说明

你已将MongoDB驱动的日志配置为DEBUG级别,但连接打开日志仍以INFO级别输出,仅连接关闭日志正常显示DEBUG级别。当前配置如下:

logging:
  level:
    root: info
    org.mongodb.driver.connection: debug

实际日志输出:

  • 连接打开(INFO级别):[LOGGG] INFO [MaintenanceTimer-1-thread-1][AnonymousUser] [] org.mongodb.driver.connection: Opened connection [connectionId{localValue:12, serverValue:1403}] to localhost:27017
  • 连接关闭(DEBUG级别):2023-05-19 15:21:07,317 [LOGGG] DEBUG [SpringApplicationShutdownHook][AnonymousUser] [] org.mongodb.driver.connection: Closing connection connectionId{localValue:10, serverValue:1673}

根源分析

MongoDB Java驱动中,Opened connection这条日志是硬编码为INFO级别的,而Closing connection是DEBUG级别。你配置的org.mongodb.driver.connection: debug是日志框架的输出阈值(允许DEBUG及以上级别日志输出),因此INFO级的连接打开日志仍会正常显示,这符合日志框架的规则。

解决方案

根据你的需求选择对应方法:

需求1:隐藏连接打开的INFO日志,仅保留DEBUG级日志

在Logback配置文件(如logback-spring.xml/logback.xml)中添加过滤规则,拒绝特定的INFO级日志:

<logger name="org.mongodb.driver.connection" level="DEBUG">
    <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
        <evaluator>
            <expression>message.contains("Opened connection")</expression>
        </evaluator>
        <onMatch>DENY</onMatch>
        <onMismatch>ACCEPT</onMismatch>
    </filter>
</logger>

注意:如果使用Spring Boot的application.yml直接将该包级别设为WARN,会同时隐藏DEBUG级的连接关闭日志,不推荐。

需求2:将连接打开的日志转为DEBUG级别输出

由于日志级别是驱动硬编码的,需通过自定义Logback转换器实现:

  1. 编写自定义转换器类:
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.pattern.CompositeConverter;

public class MongoConnectionLogLevelConverter extends CompositeConverter<ILoggingEvent> {
    @Override
    protected String transform(ILoggingEvent event, String in) {
        if ("org.mongodb.driver.connection".equals(event.getLoggerName()) 
            && event.getLevel() == Level.INFO 
            && event.getMessage().contains("Opened connection")) {
            event.setLevel(Level.DEBUG);
        }
        return in;
    }
}
  1. 在Logback配置文件中注册并使用该转换器:
<configuration>
    <conversionRule conversionWord="level" converterClass="com.yourpackage.MongoConnectionLogLevelConverter"/>
    
    <!-- 保留原有日志配置 -->
    <logger name="org.mongodb.driver.connection" level="DEBUG"/>
    
    <!-- 其他日志配置项 -->
</configuration>

内容的提问来源于stack exchange,提问作者Arsen Ilchyniak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 15:38:23