mybatis 打印sql日志
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis 打印sql日志相关的知识,希望对你有一定的参考价值。
参考技术A 查看mybatis源码,mybatis内部封装了日志接口,可以对接当前留下的所有的日志实现在实际开发过程中或者生产环境查找定位问题,需要查看执行的sql语句,以下详细说明下如何将sql日志打印出来
直接贴源码
先贴源码
看源码可以看出,mybatis是按照顺序 slf4j->commonsLog->log4j2->log4j->jdkLog->noLog(空实现),这个顺序尝试加载日志实现的,
可能本地有多中日志实现,而项目中的日志实现与mybatis加载的日志实现不同导致的,排除无用的日志实现既可,或者高版本mybatis(高于3.2.0的版本)可以直接设置mybatis的日志实现
调整root节点的日志级别,会打印出其他jar包的日志,影响我们查看问题
可以直接跳转mybatis日志级别实现打印sql日志的需求
由于mybatis日志打印是使用jdk代理实现的,如果日志级为DEBUG,会走代理类打印日志,其他级别会走原无日志逻辑,且java.sql.Connection是开启代理日志的入口,所有java.sql.Connection必须设置为DEBUG级别
由于Log4j中的log的继承关系,配置mapper的上层包路径的日志级别也可以打印日志,比如com.example.log.mapper或com.example.log.mapper.UserMapper
mybatis低版本日志打印存在缺点: 当开启打印SQL日志后,会打印所有正在执行的SQL语句,不能实现针对特定SQL的打印,基于此 MyBatis 从3.2.0版本之后重新实现了相关功能
以上是关于mybatis 打印sql日志的主要内容,如果未能解决你的问题,请参考以下文章
yml的mybatis的sql查看;Mybatis+Springboot 控制台查看日志,Mybatis结合springboot打印日志