在使用Mybatis并且配置log4j檔案後發現組合的sql語句并沒有列印到控制台
原因:Mybatis支援的幾種日志工具的使用有優先級
檢視Mybatis的官方文檔的logging子產品,日志工具優先級如下:
- SLF4J
- Apache Commons Logging
- Log4j 2
- Log4j
- JDK logging
Mybatis會從上到下搜尋日志工具,并把找到的第一個工具預設使用。
是以我們配置的log4j檔案其實并沒有用到。
解決辦法:在Mybatis的配置檔案(例如:mybatis-config檔案)中添加setting配置選擇日志檔案
例:
<configuration>
<settings>
...
<setting name="logImpl" value="LOG4J"/>
...
</settings>
</configuration>
logImpl可選的值有:SLF4J、LOG4J、LOG4J2、JDK_LOGGING、COMMONS_LOGGING、STDOUT_LOGGING、NO_LOGGING 或者是實作了接口org.apache.ibatis.logging.Log的類的完全限定類名, 并且這個類的構造函數需要是以一個字元串(String類型)為參數的。 (可以參考org.apache.ibatis.logging.slf4j.Slf4jImpl.java的實作)