MyBatis打印SQL日志的配置

配置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.mzph.cn/web/73553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringCould微服务架构之Docker(3)

1&#xff09;什么是镜像和容器&#xff1f; 2&#xff09;DockerHub&#xff1a; 3&#xff09;docker的架构如下&#xff1a;

智慧高速,安全护航:视频监控平台助力高速公路高效运营

随着我国高速公路里程的不断增长&#xff0c;交通安全和运营效率面临着前所未有的挑战。传统的监控方式已难以满足现代化高速公路管理的需求&#xff0c;而监控视频平台的出现&#xff0c;则为高速公路的安全运营提供了强有力的技术支撑。高速公路视频监控联网解决方案 高速公路…

vue对文件进行加密,后台解密后保存

为什么要做加密解密&#xff1f;主要是避免第三方检测系统&#xff08;WAF&#xff09;检测出文件有问题&#xff0c;但是文件是用户上传的&#xff0c;我们控制不了这些文件&#xff0c;所以主要是通过对用户上传文件进行加密&#xff0c;后台解密后存储。 前端&#xff1a; …

AI 在测试中的应用:从自动化到智能化的未来

阅读原文 在上一篇中&#xff0c;我们探讨了测试左移与右移如何构建质量保障的全流程闭环。现在&#xff0c;我们将目光投向更前沿的领域——AI在测试中的应用。这不仅是技术的演进&#xff0c;更是测试理念的革命&#xff1a;从"自动化执行"到"智能决策"…

Python:计算机二级:简单应用

文章目录 简单应用第一题第二题第三题第四题题型共同特点核心知识点讲解解题通用方法步骤 操作的难点1.数据的统计2.数据的筛选1. **条件判断筛选**2. **结合文件操作筛选**3. **多条件组合筛选** 类似题目其它一题 简单应用 第一题 题目 在考生文件夹下的PY202.py文件中&…

SQL Server 2022常见问题解答

以下是SQL Server 2022的常见问题解答,按主题分类整理: 一、安装与升级 SQL Server 2022的系统要求是什么? 支持的操作系统:Windows Server 2016及以上、Linux(Ubuntu 20.04/22.04, RHEL 8/9等)。内存:至少4GB(建议8GB+)。磁盘空间:6GB以上,具体取决于安装组件。如何…

力扣hot100_二分查找

二分查找 hot100_34.在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。 你必须设计…

PostgreSQL详解

第一章&#xff1a;环境部署与基础操作 1.1 多平台安装详解 Windows环境 图形化安装 下载EnterpriseDB安装包&#xff08;含pgAdmin&#xff09; 关键配置项说明&#xff1a; # postgresql.conf优化项 max_connections 200 shared_buffers 4GB work_mem 32MB 服务管理命…

conda install 慢

针对 Solving environment: failed with initial frozen solve. Retrying with flexible solve 错误&#xff0c;以下是综合解决方案&#xff1a; 一、核心解决方法‌ ‌更新 Conda 至最新版本‌ 旧版本 Conda 的依赖解析算法可能存在缺陷&#xff0c;执行以下命令升级&#…

# 使用自定义Shell脚本hello快速配置Linux用户账户

使用自定义Shell脚本快速配置Linux用户账户 在学校实验室管理Linux服务器&#xff0c;或者公司小团队管理服务器时&#xff0c;大家需要一个能隔离自己服务&#xff0c;但是自己又需要对服务器的完整权限的情形。创建和配置用户账户是一项常见但繁琐的任务。特别是当你需要频繁…

Unity Animation的其中一种运用方式

Animation是Unity的旧的动画系统&#xff0c;先说目的&#xff0c;其使用是为了在UI中播放动效&#xff0c;并且在动效播放结束后接自定义事件而设计的 设计的关键点在于&#xff0c;这个脚本不是通过Animation直接播放动画片段&#xff0c;而是通过修改AnimationState的nor…

matplotlib——南丁格尔玫瑰

南丁格尔玫瑰图&#xff08;Nightingale Rose Chart&#xff09;&#xff0c;是一种特殊形式的柱状图&#xff0c;它以南丁格尔&#xff08;Florence Nightingale&#xff09;命名&#xff0c;她在1858年首次使用这种图表来展示战争期间士兵死亡原因的数据。 它将数据绘制在极坐…

TensorFlow面试题及参考答案

目录 什么是 TensorFlow 的计算图?详细描述 TensorFlow 计算图的组成结构(节点、边、会话) 它与动态图(Eager Execution)的区别是什么?TensorFlow 静态计算图与动态图(Eager Execution)的区别及适用场景是什么? 解释张量(Tensor)的概念及其在 TensorFlow 中的作用…

6.go语言函数

Go语言中的函数是组织代码的最小单元&#xff0c;用于封装一段代码&#xff0c;完成特定的功能。函数的使用可以减少代码冗余&#xff0c;提高代码的可读性和可维护性。 函数的基本定义和语法 在Go语言中&#xff0c;定义一个函数的基本语法如下&#xff1a; func functionN…

SpringCould微服务架构之Docker(4)

Docker ce是社区版。 安装docker之前&#xff0c;先安装yum-util 。 安装docker之前&#xff0c;一定要先关闭防火墙。

Keepalived 实现高可用方案

Keepalived简介 ‌Keepalived‌ 是一个基于 ‌VRRP&#xff08;Virtual Router Redundancy Protocol&#xff09;协议‌的高可用性解决方案&#xff0c;主要用于实现‌服务故障自动切换&#xff08;Failover&#xff09;和负载均衡‌。通过管理虚拟 IP&#xff08;VIP&#xf…

WPS JS宏编程教程(从基础到进阶)--第二部分:WPS对象模型与核心操作

第二部分&#xff1a;WPS对象模型与核心操作 WPS对象的属性、方法、集合 工作簿对象常用表达方式工作表对象常用表达方式单元格对象常用表达方式 单元格操作实战 单元格复制与重定位单元格偏移与尺寸调整 颜色设置专题 索引颜色与RGB颜色按条件动态设置单元格颜色 第二部分&…

基于DrissionPage的TB商品信息采集与可视化分析

一、项目背景 随着电子商务的快速发展,淘宝作为中国最大的电商平台之一,拥有海量的商品信息。这些数据对于市场分析、用户行为研究以及竞争情报收集具有重要意义。然而,由于淘宝的反爬虫机制和复杂的页面结构,直接获取商品信息并不容易。尤其是在电商行业高速发展的今天,商…

【003安卓开发方案调研】之ReactNative技术开发安卓

基于2025年最新行业动态和搜索资料&#xff0c;以下是针对国内使用React Native&#xff08;RN&#xff09;开发安卓应用的深度分析&#xff1a; 一、技术成熟度评估 1. 核心架构升级 新架构全面普及&#xff1a;2024年起&#xff0c;React Native的 新架构&#xff08;Fabri…

JS数组方法

数组方法 一、数组 JavaScript 数组的大小是可调整的&#xff0c;并且可以包含不同 数据类型。&#xff08;当不需要这些特性时&#xff0c;请使用 类型数组。&#xff09; 注&#xff1a;JavaScript 类型数组是类似数组的对象&#xff0c;它提供了一种在内存缓冲区中读取和写…