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

Mybatis-Spring环境下批量XML Mapper查询日志配置问题求助

解决Mybatis-Spring 5下批量记录所有Mapper查询日志(JDK Logger)

核心原因

Mybatis在Spring 5环境中通过自身代理类封装JDBC操作,不再直接触发原生java.sql包的日志,因此原iBatis时代的配置失效,需针对Mybatis自身的日志组件调整配置。

解决方案步骤

1. 确保Mybatis使用JDK Logger作为日志实现

在Mybatis核心配置XML中指定日志实现:

<!-- mybatis-config.xml -->
<configuration>
  <settings>
    <!-- 强制绑定JDK Logger -->
    <setting name="logImpl" value="JDK_LOGGING"/>
  </settings>
</configuration>

如果是Spring XML整合场景,可直接在SqlSessionFactoryBean中配置:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSource"/>
  <property name="mapperLocations" value="classpath*:mapper/**/*.xml"/>
  <property name="configuration">
    <bean class="org.apache.ibatis.session.Configuration">
      <property name="logImpl" value="JDK_LOGGING"/>
    </bean>
  </property>
</bean>

2. 在Tomcat的logs.properties中配置Mybatis JDBC日志

替代原java.sql配置,直接配置Mybatis负责JDBC日志的包,即可批量输出所有Mapper的查询(含参数):

# 开启Mybatis JDBC层级日志,输出SQL语句及绑定参数
org.apache.ibatis.logging.jdbc.level=FINE
# 指定日志处理器(控制台或文件按需选择)
org.apache.ibatis.logging.jdbc.handlers=java.util.logging.ConsoleHandler

# 可选:配置日志格式和处理器级别
java.util.logging.ConsoleHandler.level=FINE
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter

3. 精准控制日志范围(可选)

若无需全量JDBC日志,可单独配置对应Statement的日志类:

# 仅输出预编译查询(PreparedStatement)日志
org.apache.ibatis.logging.jdbc.PreparedStatementLogger.level=FINE
# 仅输出未预编译查询(Statement)日志
org.apache.ibatis.logging.jdbc.StatementLogger.level=FINE

日志级别说明

  • FINE:输出完整SQL语句及绑定的参数值
  • FINER:输出更详细日志(含结果集、连接获取/释放等)
  • INFO及以上级别不会输出SQL相关细节

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:05:23