springboot 配置日誌 打印不出來sql

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

<!--指定 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須要帶「.」
二、在logback-spring中增長以下配置sql

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

注:這裏的name屬性須要與mybatis文件中logPrefix的值對應,但這裏不帶「.」springboot

那麼這裏說我遇到的問題吧,如下是個人logback中部分配置mybatis

<!--將日誌輸出到控制檯-->
<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來,最後找到問題,是由於級別的緣由。
解決方法
app

將這裏的info改成debug,就能夠打印出來了。debug

解釋下緣由:
我使用的是dev,日誌打印級別爲info,設置logger爲mybatis的打印級別爲debug,雖然info級別大於debug,可是有logger 在應該是能夠打印出來的,可是我在CONSOLE的中也配置了級別爲info,這裏的設置會攔截logger設置的級別。日誌

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

以上第一張圖是mybatis本身設置打印在控制檯的,第二張圖是mybatis打印在logback日誌中,logback打印在控制檯的。xml

相關文章
相關標籤/搜索