mybatis打印SQL日誌最終解決方案

問題

在程序調試時想要mybatis打印SQL日誌,但它並沒有類似hibernate所提供的showsql功能,因此只能通過配置log4j日誌輸出級別的方式來打印sql。但網上搜到的答案几乎都是下面的配置方式:

log4j.rootLogger=info,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
###顯示SQL語句部分
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

rootLogger的級別是info,是爲了防止其他類輸出debug的調試代碼(rootLogger若設爲debug了,mybatis也沒必要再設置了)。但這段代碼根本沒有作用!

解決方案

經過一系列的嘗試,終於找到了解決方案,直接修改dao層(將com.github.vita.code.dao修改爲你項目中dao的路徑)的輸出級別即可:

<loggers>
    <Logger name="com.github.vita.code.dao" level="trace" />
    <root level="info">
        <appender-ref ref="Console"/>
    </root>
</loggers>

上面的是log4j 2的XML配置,log4j中對應的配置爲log4j.logger.com.github.vita.code.dao=trace。這兒把輸出調成了更低的trace,可以看到更詳細的信息。

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