我們在調試sql的時候,一般情況下打印的sql的都是prepared statement 語句,其中包含了佔位符。這樣就爲我們調試工作帶來了困難。使用log4jdbc能夠解決這個問題:
- 選擇自己所要使用的日誌工具包
注意:mybatis會自動選擇內置日誌工具包,如果不手動設置,那麼會從環境中逐個尋找,如果沒有,那麼不打印日誌。具體查看官方文檔
我全局使用的slf4j,log4j.因此需要手動配置mybatis日誌工具爲slfj
<configuration>
<settings>
<!--標準輸出,參數還是用?的形式-->
<!-- <setting name="logImpl" value="STDOUT_LOGGING"/>-->
<setting name="logImpl" value="SLF4J"></setting>
</settings>
</configuration>
- 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>
- 優化默認情況下輸出的有許多,我們需要的就是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>
- 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>
- 文件輸出日誌
<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>
- 整合啓動
<root>
<!--優先級設置,假設設置爲“info”,則無法輸出debug級別的日誌-->
<priority value="error"/>
<appender-ref ref="consoleOutput"/>
<appender-ref ref="myFile"/>
</root>
未完待續