一、如何关闭mybatis日志
使用环境:Mybatis_3.2.8+ Log4j2_2.1
首先要说明的是:
Mybatis是用Mapper类的全路径名,作为logger的名称的。
Mybatis中,打印SQL语句的日志级别是DEBUG,而打印SQL执行结果集的日志级别是TRACE。
比如,我们的应用是: com.test.app
而mapper类所在的路径为: com.test.app.dao
则我们可以分别控制应用的业务日志和SQL日志的输出。
如下的Log4j2.xml将输出所有业务日志,以及SQL语句日志
引用
1
2
3
4
5
6
7
8
9
10
<Loggers>
<Logger name="com.test.app.dao" additivity="false" level="<a href="" target="_blank" class="baidu-highlight">DEBUG</a>">
<AppenderRef ref="sql_log"/>
<AppenderRef ref="Console"/>
</Logger>
<Logger name="com.test.app" additivity="false" level="<a href="" target="_blank" class="baidu-highlight">TRACE</a>">
<AppenderRef ref="biz_<a href="" target="_blank" class="baidu-highlight">debug</a>"/>
<AppenderRef ref="Console"/>
</Logger>
</Loggers>
如下的Log4j2.xml将输出所有业务日志,以及SQL语句日志,SQL语句执行结果日志
引用
1
2
3
4
5
6
7
8
9
10
<Loggers>
<Logger name="com.test.app.dao" additivity="false" level="<a href="" target="_blank" class="baidu-highlight">TRACE</a>">
<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>
二、如何让mybatis打印出执行的sql
mybatis默认使用log4j,当有self4j这个日志jar包存在时会无法打印sql,请移除或者在工程启动时显示设置mybatis使用的日志类:
log4j.logger.org.apache.ibatis=debug,stdout log4j.logger.java.sql=debug,stdout
这样有时可能却不是个可行的办法,原因在于不可能移除self4j包,因为其他依赖包必须依赖这个包。 mybatis有如下方法来手动选择日志类,调用后成功打印日志如果引用了slf4j的包,并且要使用log4j需要加入slf4j-log4j12的包,如果没有加入slf4j-log4j12的包是无法打印sql的。。具体log4j文件如下:
log4j.rootCategory=info, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.Conversion
Pattern=[QC]%p [%t]%C.%M(%L)|%m%n
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=D:\\report.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d-[TS]%p%t%c-%m%n
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,stdout
现在重启tomcat,执行一条语句看看,sql是不是都出来了
三、mybatis怎么配置log4j打印出sql语句
在程序调试时mybatis并没有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=DEBUG12345678910111234567891011
rootLogger的级别是info,防止其他地方输出debug的调试代码(rootLogger若设为debug了,mybatis也没必要再设置了)。但这段代码根本没有作用!不知是不是我使用的jar包版本比较新的缘故(3.4.1)。经过一系列的尝试,终于找到了解决方案,直接修改dao层的输出级别即可:
<loggers>
<Logger name="com.github.vita.code.dao" level="trace"/>
<root level="info">
<appender-ref ref="Console"/>
</root>
</loggers>123456123456
上面的是log4j 2的XML配置,1中对应的为log4j.logger.com.github.vita.code.dao=trace。这儿把输出调成了更低的trace,可以看到更详细的信息。
四、如何控制Mybatis的SQL日志输出
您好,很高兴为您解答。
使用环境:Mybatis_3.2.8+ Log4j2_2.1
首先要说明的是:
Mybatis是用Mapper类的全路径名,作为logger的名称的。
Mybatis中,打印SQL语句的日志级别是DEBUG,而打印SQL执行结果集的日志级别是TRACE。
比如,我们的应用是:com.test.app
而mapper类所在的路径为:com.test.app.dao
则我们可以分别控制应用的业务日志和SQL日志的输出。
如下的Log4j2.xml将输出所有业务日志,以及SQL语句日志
引用
<Loggers>
<Loggername="com.test.app.dao"additivity="false"level="DEBUG">
<AppenderRefref="sql_log"/>
<AppenderRefref="Console"/>
</Logger>
<Loggername="com.test.app"additivity="false"level="TRACE">
<AppenderRefref="biz_debug"/>
<AppenderRefref="Console"/>
</Logger>
</Loggers>
如下的Log4j2.xml将输出所有业务日志,以及SQL语句日志,SQL语句执行结果日志
引用
<Loggers>
<Loggername="com.test.app.dao"additivity="false"level="TRACE">
<AppenderRefref="sql_log"/>
<AppenderRefref="Console"/>
</Logger>
<Loggername="com.test.app"additivity="false"level="TRACE">
<AppenderRefref="biz_debug"/>
<AppenderRefref="Console"/>
</Logger>
</Loggers>
如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】
希望我的回答对您有所帮助,望采纳!
~ O(∩_∩)O~