logback打印多次mybatis的sql日志問題
logback打印多次mybatis的sql日志
配置:logback配置
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${console.log.pattern}</pattern> <charset>utf-8</charset> </encoder> </appender> <logger name="cn.ucmed.yijiao.base.mapper" level="DEBUG" additivity="true"> <appender-ref ref="console"/> </logger> <!--系統(tǒng)操作日志--> <root level="info"> <appender-ref ref="console" /> </root> </configuration>
解決方法
在xml文件中,將additivity屬性改為false
源碼解析
在mapper執(zhí)行查詢是,打斷點,最終進入Logger中的for打印日志
通過源碼可以發(fā)現(xiàn),若是沒有配置additive屬性,或是熟悉為true,會繼續(xù)調(diào)用父類(此處為root節(jié)點)打印日志,故出現(xiàn)多次日志。
logback打印mybatis sql日志
近期在項目中調(diào)試sql,發(fā)現(xiàn)現(xiàn)有的配置 使用logback 無法打印出sql語句,原配置如下(修改為debug也不好使):
<!--jdbc --> <logger name="java.sql.Connection" level="ERROR" /> <logger name="java.sql.PreparedStatement" level="ERROR" /> <logger name="org.apache.zookeeper" level="ERROR" />
經(jīng)過資料查找與測試,什么在mybatis的配置文件增加<setting name="logPrefix"/> <setting name="logImpl"/> 統(tǒng)統(tǒng)不好使。
后來測試在logback.xml 中增加如下配置,打開Debug日志輸出。
其中name="com.x.x.dao.XxxDao" 為mybatis DAO接口包路徑
<logger name="com.x.x.dao.XxxDao" level="DEBUG" />
結(jié)果輸出如下, Preparing 為原sql, Parameters 為可變參數(shù):
==> Preparing: select order_id, order_code, org_remark, add_payment, activity_id, evaluate_score FROM tc_order WHERE 1=1 and category =? and order_status = ? and start_date <=? and third_order_id = ?
2017-06-07 14:30:02,679 [executor-1] DEBUG com.xx.xx.dop2c.order.ext.TcOrderExtDao.queryForQueue - 47 - ==> Parameters: 253(Long), 30(Integer), 2017-06-07 14:30:02(String), 0(String)
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java?中的整型數(shù)據(jù)類型((byte,?short,?int,?long?)的取值范圍及使用不同的整型的場景
Java中的整型數(shù)據(jù)類型包括byte、short、int和long,每種類型都有不同的內(nèi)存占用和取值范圍,選擇合適的整型類型取決于具體需求,如內(nèi)存敏感場景、性能考量和避免整數(shù)溢出,示例代碼展示了如何聲明和初始化不同整型變量,并打印它們的最大值,感興趣的朋友一起看看吧2025-03-03SpringBoot?整合ChatGPT?API項目實戰(zhàn)教程
這篇文章主要介紹了SpringBoot整合ChatGPT API項目實戰(zhàn)教程,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05MyBatis3傳遞多個參數(shù)(Multiple Parameters)
這篇文章主要介紹了MyBatis3傳遞多個參數(shù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07- 這篇文章主要介紹了Java中的?HTTP?協(xié)議原理詳解,HTTP超文本傳輸協(xié)議,下文簡稱?HTTP,它的作用是用于實現(xiàn)服務器端和客戶端的數(shù)據(jù)傳輸?shù)?/div> 2022-07-07
多個JDK版本(Java 8、Java 17、Java 21)下載和切換
為了在實際中可以任意選擇所需的JDK版本,需要將多個JDK版本進行切換,本文主要介紹了多個JDK版本(Java 8、Java 17、Java 21)下載和切換,感興趣的可以了解一下2025-04-04最新評論