mybatis结合log4j打印SQL日志
mybatis結合log4j打印SQL日志
?
1.Maven引用jar包
默認的mybatis不能打印出SQL日志,不便于查看調試,需要結合log4jdbc-log4j2就可以完整的輸入SQL的調試信息。
pom.xml 配置maven,注意以下3個都需要
<dependency><groupId>org.bgee.log4jdbc-log4j2</groupId><artifactId>log4jdbc-log4j2-jdbc4.1</artifactId><version>1.16</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.13</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.13</version></dependency>
?
2.配置信息
log4jdbc.log4j2.prpperties
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4j.prpperties
### 設置Logger輸出級別和輸出目的地 ### debug更詳細,如果設為info那么打印出的表數據遇到字符串就不顯示,此外還有logfile
log4j.rootLogger=debug,stdout### 把日志信息輸出到控制臺 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout ### 把日志信息輸出到文件:jbit.log ###
#log4j.appender.logfile=org.apache.log4j.FileAppender
#log4j.appender.logfile.File=jbit.log
#log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
#log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %F %p %m%n ###顯示SQL語句部分
#log4j.logger.com.mybatis=DEBUG
#log4j.logger.com.mybatis.common.jdbc.SimpleDataSource=DEBUG
#log4j.logger.com.mybatis.common.jdbc.ScriptRunner=DEBUG
#log4j.logger.com.mybatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
#log4j.logger.java.sql.Connection=DEBUG
#log4j.logger.java.sql.Statement=DEBUG
#log4j.logger.java.sql.PreparedStatement=DEBUG
#log4j.logger.java.sql.ResultSet=DEBUG
?
配置文件擺放位置:
?
修改myBatis配置文件
MySQL
<!--不輸出SQL
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://..." />
-->
<!--輸出SQL-->
<property name="driver" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy" />
<property name="url" value="jdbc:log4jdbc:mysql://..." />
SQLserver
<!--不輸出sql的配置
<property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />-->
<property name="url" value="jdbc:sqlserver://..." />-->
<!--輸出sql的配置-->
<property name="driver" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy" />
<property name="url" value="jdbc:log4jdbc:sqlserver://..." />
?
執行SQL輸出SQL
?
需要注意
如果配置log4j.rootLogger=info,Console就不會輸出SQL表里的字符串,必須是log4j.rootLogger=DEBUG,Console才可以
?
3.定制化精簡日志
如圖所示打印的日志太多了,如果不需要的話很簡單把不需要的日志包配置到log4j.logger.后即可。
log4j.logger.org.springframework=error
下面是一個只輸出SQL和表數據的最精簡的配置:
log4j.rootLogger=DEBUG,Console#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n log4j.logger.org.apache=ERROR
log4j.logger.org.mybatis=ERROR
log4j.logger.org.springframework=ERROR
#這個需要
log4j.logger.log4jdbc.debug=ERROR
log4j.logger.com.gk.mapper=ERRORlog4j.logger.jdbc.audit=ERROR
log4j.logger.jdbc.resultset=ERROR
#這個打印SQL語句非常重要
log4j.logger.jdbc.sqlonly=DEBUG
log4j.logger.jdbc.sqltiming=ERROR
log4j.logger.jdbc.connection=FATAL
?
?參考:
log4jdbc-log4j2配置簡記logback + log4jdbc-log4j2 輸出 jpa sql 參數實際value
http://blog.sina.com.cn/s/blog_5bba80460102vagg.html
http://blog.csdn.net/blueheart20/article/details/26471019
http://blog.csdn.net/zht666/article/details/7869624
http://zhenggm.iteye.com/blog/1289455
http://blog.sina.com.cn/s/blog_42971b9e0100p6ua.html?netbeans配置tomcat需要驗證用戶名口令,Tomcat Manager Application
http://blog.csdn.net/ycpanda/article/details/39769737
http://www.cnblogs.com/xdp-gacl/p/4081848.html
4.直接調試出SQL語句
直接在MyBatis里打斷點調試出需要看的SQL
SimpleExecutor這個類下面
總結
以上是生活随笔為你收集整理的mybatis结合log4j打印SQL日志的全部內容,希望文章能夠幫你解決所遇到的問題。