使用log4j2打印mybatis的sql执行日志

【1】maven配置jar包依赖, 如下:

	<!-- 日志jar -->
		<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
		<dependency>
		    <groupId>org.apache.logging.log4j</groupId>
		    <artifactId>log4j-api</artifactId>
		    <version>2.11.1</version>
		</dependency>
		<dependency>
		    <groupId>org.apache.logging.log4j</groupId>
		    <artifactId>log4j-core</artifactId>
		    <version>2.11.1</version>
		</dependency>
		<dependency>
		    <groupId>org.apache.logging.log4j</groupId>
		    <artifactId>log4j-web</artifactId>
		    <version>2.11.1</version>
		</dependency>
		<dependency>
		    <groupId>org.apache.logging.log4j</groupId>
		    <artifactId>log4j-slf4j-impl</artifactId>
		    <version>2.11.1</version>
		</dependency>
	</dependencies>

【2】配置log4j2.xml 文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %l %msg%n"/>
    </Console>
    
  </Appenders>
  
  <Loggers>
    <Root level="error">
      <AppenderRef ref="Console"/>
    </Root>
    <Logger name="com.swjtu.crud.dao" level="DEBUG or TRACE" additivity="false">
      <AppenderRef ref="Console"/>
    </Logger>
  </Loggers>
</Configuration>

Logger 标签 配置了需要打印日志的mapper(Mapper类或mapper XML 文件所在包)

Logger标签中的 level属性取值为 DEBUG 或者 TRACE,(取其一)

【3】mybatis配置文件 mybatis-config.xml 中设置日志的工具类, 如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<properties resource="dbconfig.properties">
	</properties>
	
	<settings>
  	    <!-- 驼峰命名规则 -->
  		<setting name="mapUnderscoreToCamelCase" value="true"/>
  		<!-- 配置日志工具 -->
		<setting name="logImpl" value="LOG4J2" />
  	</settings>
  	
  	<typeAliases>
	  <package name="com.swjtu.crud.bean" />
	</typeAliases>
	
  	<plugins>
  		<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
  	</plugins>
  	
	<environments default="development">
		<!-- 开发环境 -->
		<environment id="development">
			<transactionManager type="JDBC"/>
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driver}"/>
				<property name="url" value="${jdbc.url}"/>
				<property name="username" value="${jdbc.username}"/>
				<property name="password" value="${jdbc.password}"/>
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
		<mapper resource="com\swjtu\crud\dao\dept.mapper.xml"/>
	</mappers>
  
</configuration>

【4】日志打印效果:

20:35:28.742 [main] DEBUG org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:181) ==>  Preparing: SELECT dept_id AS DEPT_ID , dept_name AS DEPT_NAME FROM dept_tbl WHERE rcrd_id IN ( ? , ? , ? ) 
20:35:28.786 [main] DEBUG org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:181) ==> Parameters: 1(String), 2(String), 3(String)
20:35:28.807 [main] DEBUG org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(BaseJdbcLogger.java:181) <==      Total: 3

打印sql为:

<!-- 查询部门列表 --> 
  <select id="getDeptList" resultType="map"> 
  	SELECT dept_id AS DEPT_ID 
  	       , dept_name AS DEPT_NAME
  	  FROM dept_tbl 
  	 WHERE rcrd_id IN 
  	      (
  	 	    <foreach collection="LIST" item="item" separator=", ">
  	 	      #{item} 
  	        </foreach> 
 	      ) 
  </select>

References are as follows.

http://www.mybatis.org/mybatis-3/zh/logging.html

https://blog.csdn.net/honghailiang888/article/details/52594014 

 

可以通过在log4j2.xml文件中配置org.apache.ibatis.logging.LogFactory,来打印mybatissql语句。具体配置如下: ```xml <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="Console"/> </Root> <Logger name="org.apache.ibatis" level="TRACE"/> </Loggers> </Configuration> ``` 在这个配置文件中,我们首先定义了一个名为Console的Appender,用于输出日志。然后,在Loggers中,我们定义了两个Logger,一个是Root,它的日志级别是info,表示只输出info级别及以上的日志;另一个是名为org.apache.ibatis的Logger,它的日志级别是TRACE,表示输出mybatissql语句。 在这个配置文件中,我们使用了PatternLayout来指定日志输出的格式。具体来说,%d{HH:mm:ss.SSS}表示输出日志时间,[%t]表示输出线程名,%-5level表示输出日志级别,并保留5个字符的宽度,%logger{36}表示输出logger名,并保留36个字符的宽度,%msg表示输出日志消息,%n表示输出换行符。 需要注意的是,这个配置文件需要放在classpath下,并且在应用启动时,需要正确加载这个配置文件。如果使用Spring Boot,可以将这个配置文件放在src/main/resources目录下,并在application.properties中添加如下配置: ```properties logging.config=classpath:log4j2.xml ``` 这样,Spring Boot就会自动加载这个配置文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值