1. 程式人生 > 程式設計 >springboot 配置日誌 打印不出來sql的解決方法

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來,最後找到問題,是因為級別的原因。
解決方法

springboot 配置日誌 打印不出來sql的解決方法

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

解釋下原因:

我使用的是dev,日誌列印級別為info,設定logger為mybatis的列印級別為debug,雖然info級別大於debug,但是有logger 在應該是可以打印出來的,但是我在CONSOLE的中也配置了級別為info,這裡的設定會攔截logger設定的級別。

最後在說下sql列印在控制檯的區別:

springboot 配置日誌 打印不出來sql的解決方法

springboot 配置日誌 打印不出來sql的解決方法

以上第一張圖是mybatis自己設定列印在控制檯的,第二張圖是mybatis列印在logback日誌中,logback列印在控制檯的。

以上就是springboot 配置日誌 打印不出來sql的解決方法的詳細內容,更多關於springboot 打印不出sql的資料請關注我們其它相關文章!