Mybatis设置sql打印日志的多种方法
作者:xingcsdnboke
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打印日志内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!