配置Log4j,使得MyBatis打印出SQL语句

来源:互联网 发布:黑马程序员有公司要么 编辑:程序博客网 时间:2024/05/22 09:42
【环境参数】

JDK:jdk1.8.0_25

IDE:Eclipse Luna Servie Release 1

框架:Spring 4.1.5 + SpringMVC 4.1.5 + MyBatis 3.2.2

 

【配置步骤】

一、设置MyBatis的Setting(非必须,不同环境下,可能不需要该设置)。

在“src/main/java/resources”目录下,创建mybatis-config.xml文件,并且输入下列内容。

复制代码
 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration 3     PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4     "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 <configuration> 6     <settings> 7         <setting name="lazyLoadingEnabled" value="false" /> 8         <setting name="logImpl" value="LOG4J" /> 9     </settings>10 </configuration>
复制代码

 

二、配置log4j的配置文件。

不同的项目中,log4j的配置文件的格式可能不同,在一些项目中,log4j的配置文件是XML格式的,比如log4j.xml;在另一些项目中,log4j的配置文件是properties格式的,比如log4j.properties。

1、对于properties格式文件的配置。

复制代码
 1 ###############Log4j 4 SQL Output start################# 2 log4j.logger.com.xxx.mydao=DEBUG 3 log4j.logger.com.springframework=DEBUG 4 log4j.logger.com.ibatis=DEBUG   5 log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG   6 log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG   7 log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG   8 log4j.logger.java.sql.Connection=DEBUG   9 log4j.logger.java.sql.Statement=DEBUG  10 log4j.logger.java.sql.PreparedStatement=DEBUG  11 log4j.logger.java.sql.ResultSet=DEBUG12 log4j.logger.org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl=DEBUG13 log4j.logger.java.sql=DEBUG,CONSOLE 14 ###############Log4j 4 SQL Output end###################
复制代码

2、对于xml格式文件的配置。

复制代码
 1 <loggers> 2     <!-- name可以指定包名或具体的类;additivity如果指定true,则root logger也会生效,相同日志会输出两次;false,则只有当前日志文件输出 --> 3     <!-- 借据插入接口日志 --> 4     <logger level="info" name="insertCreditBill" additivity="false"> 5         <appender-ref ref="insertCreditBillLog" /> 6     </logger>                                 7      8     <!-- 下面是打印通过log4j2打印出mybatis语句的配置--> 9     <logger name="com.xxx.mydao">10         <level>DEBUG</level>11     </logger>12     <logger name="com.springframework">13         <level>DEBUG</level>14     </logger>                        15     <logger name="com.ibatis" additivity="true"> 16         <level>DEBUG</level> 17     </logger>18     <logger name="com.ibatis.common.jdbc.SimpleDataSource" additivity="true"> 19         <level>DEBUG</level> 20     </logger>        21     <logger name="com.ibatis.common.jdbc.ScriptRunner" additivity="true"> 22         <level>DEBUG</level>23     </logger>    24     <logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" additivity="true"> 25         <level>DEBUG</level>26     </logger>                             27     <logger name="Java.sql.Connection" additivity="true">  28         <level>DEBUG</level>29     </logger> 30     <logger name="java.sql.Statement" additivity="true"> 31         <level>DEBUG</level>32     </logger> 33     <logger name="java.sql.PreparedStatement" additivity="true"> 34         <level>DEBUG</level>35     </logger> 36     <logger name="java.sql.ResultSet" additivity="true"> 37         <level>DEBUG</level>38     </logger>     39     <logger name="org.apache.ibatis.logging.commons.JakartaCommonsLoggingImpl" additivity="true"> 40         <level>DEBUG</level>41     </logger>                     42     43     <!-- root logger,任何其它的logger最终都相当于继承自 root logger -->44     <root level="INFO">45         <appenderRef ref="Console" />46         <appenderRef ref="FileLog"></appenderRef>47     </root>48 </loggers>
复制代码

说明:

上述配置中,“com.xxx.mydao”为自己项目中MyBatis的所有的mapper和xml文件所在的包名字。

至此,log4j的打印SQL语句的配置完成。

 

3、XML格式配置的精简版本

复制代码
 1 <loggers>                             2     <!-- 下面是打印通过log4j2打印出mybatis语句的配置--> 3     <logger name="com.xxx.mydao"> 4         <level>DEBUG</level> 5     </logger> 6      7     <!-- root logger,任何其它的logger最终都相当于继承自 root logger --> 8     <root level="INFO"> 9         <appenderRef ref="Console" />10         <appenderRef ref="FileLog"></appenderRef>11     </root>12 </loggers>
复制代码

说明:
  在开发中,需要配置让哪个包下的程序打印出SQL,则仅仅只用配置那一个包名就成。

  上述配置中,“com.xxx.mydao”为自己项目中MyBatis的mapper和xml文件所在的包名字,因此,精简版中,仅仅配置了这个包的内容

【拓展】

“细粒度”控制:Log4j打印出MyBatis中仅仅单个Mapper的配置。

<!-- 下面是通过配置log4j2,仅仅打印出单个mapper的SQL语句的配置--><logger name="com.beebank.dao.iface.UserMapper">    <level>DEBUG</level></logger>
原创粉丝点击