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

Spring Boot中MongoDB SLF4JLogger日志禁用失效问题求助

问题:MongoDB驱动诊断日志禁用失效

运行Spring Boot应用时会输出以下MongoDB命令日志:

c.m.i.d.l.SLF4JLogger : Command "insert" started on database "test" using a connection with driver-generated ID 3 and server-generated ID 13 to localhost:32795. The request ID is 13 and the operation ID is 11. Command: {"insert": "jobExecution", "ordered": true, "txnNumber": 1, "$db": "test", "$clusterTime": {"clusterTime": {"$timestamp": ...}

其中c.m.i.d.l.SLF4JLogger对应全类名com.mongodb.internal.diagnostics.logging.SLF4JLogger。

尝试通过以下方式禁用日志但均无效:

  1. 修改log4j2.xml添加配置:
    <Logger level="INFO" name="com.mongodb.internal.diagnostics.logging"/>
    
  2. 在集成测试的application-test.yml中设置日志级别:
    debug: false
    logging:
      level:
        com.mongodb.internal.diagnostics.logging: INFO # 无效
        org.springframework.data.mongodb.core: INFO    # 有效
    

解决方案

1. 针对正确的日志类别配置级别

这些命令日志并非来自com.mongodb.internal.diagnostics.logging包,而是MongoDB驱动通过命令日志类别输出的,正确的日志类别为org.mongodb.driver.command(部分旧版本驱动用com.mongodb.driver.command),直接针对该类别设置级别即可:

方式一:application-test.yml配置

logging:
  level:
    org.mongodb.driver.command: OFF  # 完全禁用命令日志
    com.mongodb.driver.command: OFF  # 兼容不同驱动版本

如果不需要完全禁用,也可以设置为WARN或ERROR级别,只保留重要日志。

方式二:log4j2.xml配置

<Logger level="OFF" name="org.mongodb.driver.command"/>
<Logger level="OFF" name="com.mongodb.driver.command"/>

2. 通过MongoDB驱动原生配置控制

部分场景下,驱动会优先读取自身的日志配置属性,可以在配置文件中添加:

spring.data.mongodb:
  logging:
    level: OFF

或者直接指定驱动原生配置:

mongodb:
  driver:
    logging:
      command: OFF

3. 检查日志框架桥接依赖

如果项目中存在多个日志框架冲突(比如同时引入SLF4J、Logback和Log4j2),会导致日志配置不生效。确保只保留一套日志实现,比如使用Log4j2时,排除Spring Boot默认的Logback依赖:

<!-- Maven依赖配置 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-mongodb</artifactId>
  <exclusions>
    <exclusion>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-logging</artifactId>
    </exclusion>
  </exclusions>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

原因说明

之前的配置无效是因为错误地针对日志实现类SLF4JLogger所在的包进行配置,而实际这些命令日志的输出类别是org.mongodb.driver.command,SLF4JLogger只是驱动用来输出日志的工具类,并非日志的分类标识。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 00:33:21