mybatislogsql
A. 如何控制Mybatis的sql日誌輸出
首先配置 log4j日誌文件
#mybatis日誌范圍
log4j.logger.com.nes=TRACE
#ibatis配置
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.org.mybatis=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
2.導入依賴日誌包 log4j
<!-- SLFJ 可依賴到log4j-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.4</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
B. mybatis怎麼在控制台列印sql語句
mybatis默認使用log4j,當有self4j這個日誌jar包存在時會無法列印sql,請移除或者在工程啟動時顯示設置mybatis使用的日誌類
log4j.logger.org.apache.ibatis=debug,stdout
log4j.logger.java.sql=debug,stdout
C. 如何列印mybatis的sql語句
此處使用log4j,加入jar包,然後在src路徑下加入:log4j.properties文件
填入以下配置就可以列印了
log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
D. 請教問Mybatis 如何列印SQL語句
MyBatis自己內部使用的是Log4j,但實際上支持用戶使用各種Log技術。如果配置正確的話,也就是啟用debug級別即可列印所有的MyBatis的語句。比如,在我的web程序中,使用logback,maven依賴如下:
<!--log-begin-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.6.1</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>0.9.27</version>
</dependency>
<!--log-end-->
E. 如何控制Mybatis的SQL日誌輸出
首先要說明的是:
Mybatis是用Mapper類的全路徑名,作為logger的名稱的。
Mybatis中,列印SQL語句的日誌級別是DEBUG,而列印SQL執行結果集的日誌級別是TRACE。(因為有些SQL可能語句簡單,但是結果集很多,分開級別,有利於用戶控制輸出。)
記住這兩點,對控制Mybatis的SQL日誌輸出很重要。
比如,我們的應用是:
com.test.app
而mapper類所在的路徑為:
com.test.app.
則我們可以分別控制應用的業務日誌和SQL日誌的輸出。
如下的Log4j2.xml將輸出所有業務日誌,以及SQL語句日誌
引用
<Loggers>
<Logger name="com.test.app." additivity="false" level="DEBUG">
<AppenderRef ref="sql_log"/>
<AppenderRef ref="Console"/>
</Logger>
<Logger name="com.test.app" additivity="false" level="TRACE">
<AppenderRef ref="biz_debug"/>
<AppenderRef ref="Console"/>
</Logger>
</Loggers>
如下的Log4j2.xml將輸出所有業務日誌,以及SQL語句日誌,SQL語句執行結果日誌
引用
<Loggers>
<Logger name="com.test.app." additivity="false" level="TRACE">
<AppenderRef ref="sql_log"/>
<AppenderRef ref="Console"/>
</Logger>
<Logger name="com.test.app" additivity="false" level="TRACE">
<AppenderRef ref="biz_debug"/>
<AppenderRef ref="Console"/>
</Logger>
</Loggers>
F. Mybatis使用log4j列印sql,沒有輸出resultSet
ybatis默認使用log4j,當有self4j這個日誌jar包存在時會無法列印sql
#需要debug
log4j.rootCategory=info,stdout,file
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# log4j.appender.stdout.layout.ConversionPattern= %-d{yyyy-MM-dd HH:mm:ss.SSS}, [%-9t], [%-5p], %C{1}.%M(%L), | %m%n
log4j.appender.stdout.layout.ConversionPattern= %-d{yyyy-MM-dd HH:mm:ss.SSS}, [%-9t], [%-5p], %C{1}.(%-3L), | %m%n
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.file=${webapp.root}/logs/My.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern= %-d{yyyy-MM-dd HH:mm:ss.SSS}, [%-9t], [%-5p], %C{1}.%M(%L), | %m%n
# OpenSymphony Stuff
log4j.logger.freemarker=info
log4j.logger.com.opensymphony=info
log4j.logger.com.opensymphony.xwork2.ognl=info
log4j.logger.org.apache.struts2=info
# Spring Stuff
log4j.logger.org.springframework=info
#mybatis Console
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
########## new 20141225
# OpenSymphony Stuff
log4j.logger.freemarker=WARN
log4j.logger.com.opensymphony=WARN
log4j.logger.com.opensymphony.xwork2.ognl=WARN
log4j.logger.org.apache.struts2=WARN
# Spring Stuff
log4j.logger.org.springframework=WARN
#mybatis Console
###顯示SQL語句部分
log4j.logger.org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl=DEBUG
log4j.logger.java.sql=DEBUG,stdout