springboot 配置日志 打印不出來sql


今天整合springboot2 + mybatis + logback 遇到了在日志中sql打印不出來的坑,在網上找了好久,都不是我遇到的問題,這里吐槽一下下現在的博客質量,好多都是抄襲的,也沒有標注轉載。
先說下要將sql打印到日志的配置
1、在mybatis.xml配置中增加以下配置

  <!--指定 MyBatis 增加到日志名稱的前綴。-->
  <setting name="logPrefix" value="m-shop-mybatis-sql." />
  <!--指定 MyBatis 所用日志的具體實現,未指定時將自動查找。 SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING-->
  <setting name="logImpl" value="SLF4J" />

注:這里注意下logPrefix的value需要帶“.”
2、在logback-spring中增加如下配置

  <logger name="m-shop-mybatis-sql" level="debug"></logger>

注:這里的name屬性需要與mybatis文件中logPrefix的值對應,但這里不帶“.”

那么這里說我遇到的問題吧,以下是我的logback中部分配置

<!--將日志輸出到控制台-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>info</level>
    </filter>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <!--打印格式-->
        <pattern>${LOG_FORMAT}</pattern>
        <!-- 設置字符集 -->
        <charset>${ENCODING}</charset>
    </encoder>
</appender>

<logger name="m-shop-mybatis-sql" level="debug"></logger>

<springProfile name="dev,test">
    <!-- 日志輸出級別 -->
    <root level="info">
        <appender-ref ref="CONSOLE" />
    </root>
</springProfile>
<springProfile name="prod">
    <!-- 日志輸出級別 -->
    <root level="info">
        <appender-ref ref="FILE" />
    </root>
</springProfile>

這是我最開始的配置,就是打印不出sql來,最后找到問題,是因為級別的原因。
解決方法

將這里的info改為debug,就可以打印出來了。

解釋下原因:
我使用的是dev,日志打印級別為info,設置logger為mybatis的打印級別為debug,雖然info級別大於debug,但是有logger 在應該是可以打印出來的,但是我在CONSOLE的中也配置了級別為info,這里的設置會攔截logger設置的級別。

最后在說下sql打印在控制台的區別:

以上第一張圖是mybatis自己設置打印在控制台的,第二張圖是mybatis打印在logback日志中,logback打印在控制台的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM