MyBatis打印SQL日志的配置

devtools/2025/3/30 3:58:37/

配置MyBatis打印日志的步骤如下,支持多种日志框架(如Logback、Log4j2等):


一、选择日志框架并添加依赖(以常见组合为例)

1. Logback(推荐)
<!-- Maven 依赖 -->
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.4.14</version>
</dependency>
2. Log4j2
<!-- Maven 依赖 -->
<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.23.1</version>
</dependency>
<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j2-impl</artifactId><version>2.23.1</version>
</dependency>

二、配置日志文件

1. Logback 配置 (logback.xml)
<?xml version="1.0" encoding="UTF-8"?>
<configuration><!-- 控制台输出 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><!-- 设置MyBatis Mapper接口的日志级别为DEBUG --><!-- com.example.mapper为mapper的xml文件所在的包路径--><!-- additivity="false" 表示不传递给父级(root),不重复打印日志--><logger name="com.example.mapper" level="DEBUG" additivity="false"><appender-ref ref="STDOUT"/></logger><!-- 根日志级别 --><root level="INFO"><appender-ref ref="STDOUT"/></root>
</configuration>
2. Log4j2 配置 (log4j2.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!-- status="WARN"表示全局的日子级别-->
<Configuration status="WARN"><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/></Console></Appenders><Loggers><!-- 设置MyBatis Mapper接口的日志级别 --><!-- com.example.mapper为mapper的xml文件所在的包路径--><!-- additivity="false" 表示不传递给父级(root),不重复打印日志--><Logger name="com.example.mapper" level="DEBUG" additivity="false"><AppenderRef ref="Console"/></Logger><!-- 根日志级别 --><!--logger的级别是:root,logger; root是根日志,logger是root的子级别;root及logger里面的AppenderRef表示打印的方式-控制台 --><Root level="INFO"><AppenderRef ref="Console"/></Root></Loggers>
</Configuration>
3. MyBatis配置文件的配置
<!-- 在mybatis-config.xml中指定日志实现(可选) -->
<configuration><settings><setting name="logImpl" value="SLF4J"/> <!-- 或 LOG4J2、LOG4J等,**配置SLF4J是最好的** --></settings>
</configuration>

三、验证配置

  1. 运行SQL操作:执行MyBatis的数据库查询,观察控制台输出。
  2. 预期日志:应看到类似以下内容,包含SQL语句、参数和结果:
    2024-01-01 12:00:00 [main] DEBUG com.example.mapper.UserMapper.selectUser - ==>  Preparing: SELECT * FROM user WHERE id = ?
    2024-01-01 12:00:00 [main] DEBUG com.example.mapper.UserMapper.selectUser - ==> Parameters: 1(Integer)
    2024-01-01 12:00:00 [main] DEBUG com.example.mapper.UserMapper.selectUser - <==      Total: 1
    

四、常见问题排查

  1. 日志未打印
    • 检查依赖是否冲突(如同时存在多个日志框架)。
    • 确认logger name路径与Mapper接口包名一致。
    • 确保日志级别设置为DEBUG
  2. 日志未打印,检查Log4j2配置文件与mapper的Logger
    • 如果使用的是Log4j2,检查全局配置的status
      <!--此处的status为WARN的日子级别 -->
      <?xml version="1.0" encoding="UTF-8"?>
      <Configuration status="WARN">
      
    • 检查mapper的Logger配置,要大于等于全局配置
      <!-- 设置MyBatis Mapper接口的日志级别 -->
      <!-- 此处设置的level="DEBUG" ,要大于全局的配置status="WARN" -->
      <Logger name="com.example.mapper" level="DEBUG" additivity="false"><AppenderRef ref="Console"/>
      </Logger>
      

通过以上步骤即可正确打印MyBatis的SQL日志。根据实际项目使用的日志框架选择对应配置即可。


http://www.ppmy.cn/devtools/171488.html

相关文章

线性代数核心概念与NumPy科学计算实战全解析

前言 学习方法&#xff1a; 思维导图&#xff0c;梳理 多记忆&#xff0c;函数名和功能&#xff0c;参数 学会应用&#xff0c;不要钻牛角尖 一、浅解线性代数 1.1标量 标量是一个只有大小没有方向的量。在数学上&#xff0c;标量通常表示为一个普通的数字&#xff0c;如‌质量…

网络中常用协议

一, TCP协议 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是互联网核心协议之一&#xff0c;位于传输层&#xff0c;为应用层提供可靠的、面向连接的数据传输服务。 1. TCP的核心特点 特性说明面向连接通信前需通过三次握手建立连接&a…

[AI建模] 使用Pinokio本地化部署混元2D到3D AI建模服务

近年来,AI驱动的2D转3D建模技术发展迅猛,而Pinokio作为一个强大的AI模型管理与部署平台,使得在本地部署这些复杂的AI模型变得更加简单高效。本文将介绍如何使用Pinokio在本地部署混元2D到3D AI建模服务,并快速生成带或不带Texture的3D模型。 1. 在Pinokio Discover页面找到…

Blender模型旋转动画制作

在Blender中让模型旋转并制作成动画的步骤如下&#xff1a; 选择模型 打开Blender&#xff0c;确保模型已在场景中。 右键点击模型以选中它。 插入初始旋转关键帧 将时间轴光标移动到第1帧。 按 R 键旋转模型&#xff0c;或直接在属性面板调整旋转值。 按 I 键&#xff0c…

深入 SVG:矢量图形、滤镜与动态交互开发指南

1.SVG 详细介绍 SVG&#xff08;Scalable Vector Graphics&#xff09; 是一种基于 XML 的矢量图形格式&#xff0c;用于描述二维图形。 1. 命名空间 (Namespace) ★ 了解 命名空间 URI&#xff1a;http://www.w3.org/2000/svg 用途&#xff1a;在 XML 或 XHTML 中区分不同标…

conda 常用命令

常用 Conda 命令整理环境管理 conda create --name 环境名 &#xff1a;创建新环境 conda activate 环境名 &#xff1a;激活环境 conda deactivate&#xff1a;退出环境 conda env list&#xff1a;列出所有环境 conda remove --name 环境名 --all &#xff1a;删除环…

JDK 24 发布,新特性解读!

一、版本演进与技术格局新动向 北京时间3月20日&#xff0c;Oracle正式发布Java SE 24。作为继Java 21之后的第三个非LTS版本&#xff0c;其技术革新力度远超预期——共集成24项JEP提案&#xff0c;相当于Java 22&#xff08;12项&#xff09;与Java 23&#xff08;12项&#…

Python学习笔记(7)关于列表创建,增加,删除

列表 **Python中一切都是对象 存放多个值的连续内存空间 大小可变 增加元素 a a[50]#➕运算符操作&#xff0c;产生了新对象 list.append(x) #将元素x增加至list尾部 list.extend(alist) #将列表alist增加至list尾部 list.insert(index.x) #将元素x插入list指定index位置 …