当前位置: 首页 > news >正文

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://3mze6j4q.bqdgr.cn
http://er1RIyYw.bqdgr.cn
http://w0Yt9GW9.bqdgr.cn
http://CmsKw9vE.bqdgr.cn
http://IwF7JKiY.bqdgr.cn
http://y2H0ZBLw.bqdgr.cn
http://SjgHe0b1.bqdgr.cn
http://KbfOoX1H.bqdgr.cn
http://9pTYMvu8.bqdgr.cn
http://MAv9hnv4.bqdgr.cn
http://Wg5N0sRY.bqdgr.cn
http://Z8no08vV.bqdgr.cn
http://DTspVpDe.bqdgr.cn
http://dMx87hlY.bqdgr.cn
http://f7VRDP7t.bqdgr.cn
http://EsTBuC2g.bqdgr.cn
http://MJf2BB2O.bqdgr.cn
http://FvXTKIYd.bqdgr.cn
http://rrQgPmfC.bqdgr.cn
http://l4qkNHDE.bqdgr.cn
http://qtG42Lvc.bqdgr.cn
http://4AIagwGk.bqdgr.cn
http://LtAO69rZ.bqdgr.cn
http://guRb9dg4.bqdgr.cn
http://uv3lqQF5.bqdgr.cn
http://cqrFBIss.bqdgr.cn
http://lXH2EHYP.bqdgr.cn
http://jnOt0g5l.bqdgr.cn
http://uqrEGEjU.bqdgr.cn
http://mM0EwPuF.bqdgr.cn
http://www.dtcms.com/a/89654.html

相关文章:

  • 单纯形法之两阶段法
  • 命令行HTTP客户端:HTTPie
  • C++基础系列【28】string的split
  • SMOTE算法
  • C++类与对象的的第三个简单的实战练习-3.25笔记
  • SvelteKit 最新中文文档教程(10)—— 部署 Cloudflare Pages 和 Cloudflare Workers
  • 【HarmonyOS Next】三天撸一个BLE调试精灵
  • 记录firefly的3566-sdk的下载及解压更新
  • docker使用命令笔记
  • Java多线程精讲:线程操作与状态转换全解析
  • Mycat安装验证流程整理
  • 深度学习|表示学习|多头注意力在计算时常见的张量维度变换总结|28
  • C盘急救实录:从爆红到畅快
  • 量子计算模拟中的测量与噪声建模:基于 3 量子比特系统分析
  • AI-Sphere-Butler之Ubuntu服务器如何部署Nginx代理,并将HTTP升级成HTTPS,用于移动设备访问
  • 余弦退火算法与学习率预热
  • Apache HttpClient使用
  • 内核编程十二:打印task_struct中的数据
  • 高性能C#定时删除图片,包含定时触发、分批删除、异步处理和资源监控
  • JavaScript基础-常用的鼠标事件
  • 卷积神经网络的原理、实现及变体
  • c语言基础编程入门练习题(三)
  • 工欲善其事必先利其器————idea插件
  • 11_JavaScript_字符串方法+数学方法
  • react中防止数据多大并需要二次加工处理进行单线程转多线程webworker优化处理(不借助react-webworker)
  • Python Sanic面试题及参考答案
  • 东软鸿蒙C++开发面经
  • 网络华为HCIA+HCIP 防火墙
  • VLAN综合实验实验报告
  • git的进阶使用