spring-mybatis項目中打印完整sql不帶佔位符

我們在調試sql的時候,一般情況下打印的sql的都是prepared statement 語句,其中包含了佔位符。這樣就爲我們調試工作帶來了困難。使用log4jdbc能夠解決這個問題:

  1. 選擇自己所要使用的日誌工具包

注意:mybatis會自動選擇內置日誌工具包,如果不手動設置,那麼會從環境中逐個尋找,如果沒有,那麼不打印日誌。具體查看官方文檔

我全局使用的slf4j,log4j.因此需要手動配置mybatis日誌工具爲slfj

<configuration>
    <settings>
        <!--標準輸出,參數還是用?的形式-->
    <!--    <setting name="logImpl" value="STDOUT_LOGGING"/>-->
        <setting name="logImpl" value="SLF4J"></setting>
    </settings>
</configuration>
  1. pom中引入log4jdbc的jar包
<!-- https://mvnrepository.com/artifact/com.googlecode.log4jdbc/log4jdbc -->
<dependency>
    <groupId>com.googlecode.log4jdbc</groupId>
    <artifactId>log4jdbc</artifactId>
    <version>1.2</version>
</dependency>
  1. 優化默認情況下輸出的有許多,我們需要的就是sqlonly,因此給高的級別
    additivity 設置在缺省配置的情況下是否使用默認配置
    <logger name="jdbc.sqlonly" additivity="true">
        <level value="INFO"/>
    </logger>
    <logger name="jdbc.sqltiming" additivity="true">
        <level value="ERROR"/>
    </logger>

    <logger name="jdbc.resultsettable" additivity="true">
        <level value="ERROR"/>
    </logger>

    <logger name="jdbc.resultset" additivity="true">
        <level value="ERROR"/>
    </logger>
    <logger name="jdbc.connection" additivity="true">
        <level value="ERROR"/>
    </logger>
    <logger name="jdbc.audit" additivity="true">
        <level value="WARN"/>
    </logger>

  1. console輸出日誌
    <appender name="consoleOutput" class="org.apache.log4j.ConsoleAppender">
        <!--輸出格式-->
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n"/>
        </layout>
    </appender>
  1. 文件輸出日誌
    <appender name="myFile" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="E:\\IdeaProjects\\complat\\target\\complat\\output.log"/><!--文件位置-->
        <param name="Append" value="true"/><!--是否選擇追加-->
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                   value="%-d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n"/>
        </layout>
    </appender>


  1. 整合啓動
    <root>
        <!--優先級設置,假設設置爲“info”,則無法輸出debug級別的日誌-->
        <priority value="error"/>
        <appender-ref ref="consoleOutput"/>
        <appender-ref ref="myFile"/>
    </root>

未完待續

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章