Mybatis设置sql打印日志的多种方法

 更新时间:2023年08月05日 15:01:40   作者:xingcsdnboke  
这篇文章主要介绍了Mybatis设置sql打印日志,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

Mybatis设置sql打印日志

第一种:使用 mybatis 自带的打印

<settings>
		<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>

第二种:使用 log4j 日志打印

<settings>
	<!-- 配置 log4j 打印查询语句 -->
		<setting name="logImpl" value="LOG4J" />-->
	</settings>
</setting>
###显示SQL语句部分
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.com.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.com.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

备注:log4j 运行级别调到DEBUG,可以在控制台打印出mybatis运行的sql语句。

#将等级为DEBUG的日悲信虑出到console和file这网个日的地,console和file的定义在下面的代码
log4j.rootLogger=DEBUG,console,file
#控制台输出的相关设置
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%c]-%m%n
#文件输出的相关设置
log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./log/kuang.log
log4j.appender.file.MaxFileSize=10mb
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n
#日志输出级别
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sgl.ResultSet=DEBUG
log4j.logger.java.sq1.PreparedStatement=DEBUG

第三种:springboot 增加配置

在springboot + mybatis整合中,可以将springboot的配置文件添加如下代码:

logging:###配置sql打印日志
  level:
  com.example.demo.mapper: DEBUG
  org.springframework.web: DEBUG
  java.sql: DEBUG
  org.mybatis.spring: DEBUG

mybatis打印sql日志

背景:

我们日常操作数据库的过程一般都是使用mybatis中执行sql操作,有时候为了确认mybatis拼接的sql是否正确,就需要在日志中打印出具体的sql语句,对应的入参以及数据库的返回值

打印mybatis的sql日志:

一.sql日志输出到控制台,修改mybatis-config文件,指定如下配置:

      <setting name="logImpl" value="STDOUT_LOGGING"/>

二.sql日志输出到文件,修改mybatis-config文件,指定如下配置

2.1

<!--指定 MyBatis 增加到日志名称的前缀,注意这里有一个.号-->
        <setting name="logPrefix" value="sqlLogFileName."/>
        <!--指定 MyBatis 所用日志的具体实现,未指定时将自动查找。SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING-->
        <setting name="logImpl" value="SLF4J"/>

2.2 logback或者log4j增加配置:

appender("ROLLING", RollingFileAppender) {
    encoder(PatternLayoutEncoder) {
        Pattern = "[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%level] [%thread] [%logger{50}] >>> %msg%n"
    }
    rollingPolicy(SizeAndTimeBasedRollingPolicy) {
        fileNamePattern = "log-%d{yyyy-MM-dd}-%i.log"
        maxFileSize = "2GB"
    }
}
appender("ROLLING-ASYNC", AsyncAppender) {
    queueSize = 40960
    neverBlock = true
    appenderRef("ROLLING")
}
//最关键的一句
logger("sqlLogFileName", DEBUG, ["ROLLING-ASYNC"], false)

关键是日志级别要修改成DEBUG级别

日志效果:

[2023-07-07 17:39:49.533] [DEBUG] [**-thread-2] [org.mybatis.spring.SqlSessionUtils] >>> Creating a new SqlSession
[2023-07-07 17:39:49.647] [DEBUG] [**-thread-2] [dao.***Mapper.selectByStatus] >>> ==>  Preparing: select user_id, status, is_deleted, create_time, update_time from user where status = ? 
[2023-07-07 17:39:49.650] [DEBUG] [**-thread-2] [dao.***Mapper.selectByStatus] >>> ==> Parameters: 0(Byte)
[2023-07-07 17:39:51.620] [DEBUG] [**-thread-2] [dao.***Mapper.selectByStatus] >>> <==      Total: 805
[2023-07-07 17:39:51.622] [DEBUG] [**-thread-2] [org.mybatis.spring.SqlSessionUtils] >>> Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7b989b3b]

主要信息包括执行的sql语句,sql的入参,sql的返回值(对update或者insert语句很有用).

参考资料:

http://www.tianshouzhi.com/api/tutorials/mybatis/375

https://www.cnblogs.com/phpdragon/p/12107146.html

到此这篇关于Mybatis设置sql打印日志的文章就介绍到这了,更多相关Mybatis打印日志内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 从字符串中截取等长字节的Java代码

    从字符串中截取等长字节的Java代码

    这篇文章主要介绍了从字符串中截取等长字节的Java代码,有需要的朋友可以参考一下
    2013-12-12
  • 对数据进行分页显示到table中的实现方法

    对数据进行分页显示到table中的实现方法

    这篇文章主要介绍了对数据进行分页显示到table中的实现方法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-05-05
  • Sentinel 整合SpringCloud的详细教程

    Sentinel 整合SpringCloud的详细教程

    Spring Cloud Alibaba Sentinel 是阿里巴巴提供的,致力于提供微服务一站式解决方案,这篇文章主要介绍了Sentinel 之 整合SpringCloud的相关知识,需要的朋友可以参考下
    2021-10-10
  • Springboot项目删除项目同步target文件问题解决方案

    Springboot项目删除项目同步target文件问题解决方案

    这篇文章主要介绍了Springboot项目删除项目同步target文件问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • Spring @Transaction 注解执行事务的流程

    Spring @Transaction 注解执行事务的流程

    这篇文章主要介绍了Spring @Transaction 注解执行事务的流程,Spring 是如何开启事务的?又是如何进行提交事务和关闭事务的,本文给大家详细介绍,需要的朋友可以参考下
    2021-06-06
  • Spring boot工具类静态属性注入及多环境配置详解

    Spring boot工具类静态属性注入及多环境配置详解

    这篇文章主要为大家详细介绍了Spring boot工具类静态属性注入,及多环境配置详解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Springboot双mongodb配置方式

    Springboot双mongodb配置方式

    这篇文章主要介绍了Springboot双mongodb配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • java实现的新浪微博分享代码实例

    java实现的新浪微博分享代码实例

    这篇文章主要介绍了java实现的新浪微博分享代码实例,是通过新浪API获得授权,然后接受客户端请求的数据,第三方应用发送请求消息到微博,唤起微博分享界面,非常的实用,有相同需要的小伙伴可以参考下。
    2015-03-03
  • spring boot项目实战之实现与数据库的连接

    spring boot项目实战之实现与数据库的连接

    在我们日常的开发过程中,肯定不可避免的会使用到数据库以及SQL 语句,下面这篇文章主要给大家介绍了关于spring boot项目实战之实现与数据库连接的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • Sprint Boot 集成MongoDB的操作方法

    Sprint Boot 集成MongoDB的操作方法

    最近接手一个Springboot项目,需要在原项目上增加一些需求,用到了mongodb。下面通过本文给大家分享Sprint Boot 集成MongoDB的操作方法,需要的朋友参考下吧
    2017-12-12

最新评论