Mybatis設(shè)置sql打印日志的多種方法
Mybatis設(shè)置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 運(yùn)行級別調(diào)到DEBUG,可以在控制臺打印出mybatis運(yùn)行的sql語句。
#將等級為DEBUG的日悲信慮出到console和file這網(wǎng)個日的地,console和file的定義在下面的代碼
log4j.rootLogger=DEBUG,console,file
#控制臺輸出的相關(guān)設(shè)置
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
#文件輸出的相關(guān)設(shè)置
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日志
背景:
我們?nèi)粘2僮鲾?shù)據(jù)庫的過程一般都是使用mybatis中執(zhí)行sql操作,有時候?yàn)榱舜_認(rèn)mybatis拼接的sql是否正確,就需要在日志中打印出具體的sql語句,對應(yīng)的入?yún)⒁约皵?shù)據(jù)庫的返回值
打印mybatis的sql日志:
一.sql日志輸出到控制臺,修改mybatis-config文件,指定如下配置:
<setting name="logImpl" value="STDOUT_LOGGING"/>
二.sql日志輸出到文件,修改mybatis-config文件,指定如下配置
2.1
<!--指定 MyBatis 增加到日志名稱的前綴,注意這里有一個.號--> <setting name="logPrefix" value="sqlLogFileName."/> <!--指定 MyBatis 所用日志的具體實(shí)現(xiàn),未指定時將自動查找。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") } //最關(guān)鍵的一句 logger("sqlLogFileName", DEBUG, ["ROLLING-ASYNC"], false)
關(guān)鍵是日志級別要修改成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]
主要信息包括執(zhí)行的sql語句,sql的入?yún)ⅲ瑂ql的返回值(對update或者insert語句很有用).
參考資料:
http://www.tianshouzhi.com/api/tutorials/mybatis/375
https://www.cnblogs.com/phpdragon/p/12107146.html
到此這篇關(guān)于Mybatis設(shè)置sql打印日志的文章就介紹到這了,更多相關(guān)Mybatis打印日志內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot實(shí)現(xiàn)API接口的完整代碼
這篇文章主要給大家介紹了關(guān)于SpringBoot實(shí)現(xiàn)API接口的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10使用JWT創(chuàng)建解析令牌及RSA非對稱加密詳解
這篇文章主要介紹了JWT創(chuàng)建解析令牌及RSA非對稱加密詳解,JWT是JSON Web Token的縮寫,即JSON Web令牌,是一種自包含令牌,一種情況是webapi,類似之前的阿里云播放憑證的功能,另一種情況是多web服務(wù)器下實(shí)現(xiàn)無狀態(tài)分布式身份驗(yàn)證,需要的朋友可以參考下2023-11-11Java數(shù)據(jù)結(jié)構(gòu)之樹和二叉樹的相關(guān)資料
這篇文章主要介紹了Java?數(shù)據(jù)結(jié)構(gòu)之樹和二叉樹相關(guān)資料,文中通過示例代碼和一些相關(guān)題目來做介紹,非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下!2023-01-01一文詳解如何從零構(gòu)建Spring?Boot?Starter并實(shí)現(xiàn)整合
Spring Boot是一個開源的Java基礎(chǔ)框架,用于創(chuàng)建獨(dú)立、生產(chǎn)級的基于Spring框架的應(yīng)用程序,這篇文章主要介紹了如何從零構(gòu)建Spring?Boot?Starter并實(shí)現(xiàn)整合的相關(guān)資料,需要的朋友可以參考下2025-03-03SpringCloud中的斷路器(Hystrix)和斷路器監(jiān)控(Dashboard)
本篇主要介紹的是SpringCloud中的斷路器(Hystrix)和斷路器指標(biāo)看板(Dashboard)的相關(guān)使用知識,需要的朋友可以參考下2019-06-06java中對象調(diào)用成員變量與成員實(shí)例方法
在本篇文章里小編給各位分享的是關(guān)于java中對象調(diào)用成員變量與成員實(shí)例方法,需要的朋友們可以學(xué)習(xí)參考下。2020-02-02SpringBoot整合mybatis使用Druid做連接池的方式
這篇文章主要介紹了SpringBoot整合mybatis使用Druid做連接池的方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08