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

本文介绍如何使用Maven配置Log4j2进行日志记录,包括添加依赖、配置log4j2.xml、调整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.youkuaiyun.com/honghailiang888/article/details/52594014 

 

### 使用 Log4j2 配置 MyBatis 日志输出 为了将 MyBatis日志输出配置为使用 Log4j2,需要按照以下方式完成相关设置。 #### 1. 引入 Log4j2 依赖 在项目的 `pom.xml` 文件中添加 Log4j2 的相关依赖,确保项目能够正确加载 Log4j2 的功能[^4]。 ```xml <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.10.0</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.10.0</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-web</artifactId> <version>2.10.0</version> </dependency> ``` #### 2. 配置 Log4j2 在 `resources` 目录下创建 `log4j2.xml` 文件,并配置日志输出规则。以下是一个示例配置文件,它将 MyBatisSQL 日志记录到指定的日志文件中[^1]。 ```xml <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" /> </Console> <RollingFile name="MyBatisLog" fileName="logs/mybatis.log" filePattern="logs/mybatis-%d{yyyy-MM}.log"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n" /> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> </Policies> </RollingFile> </Appenders> <Loggers> <Logger name="com.example.mapper" level="DEBUG" additivity="false"> <AppenderRef ref="MyBatisLog" /> </Logger> <Root level="INFO"> <AppenderRef ref="Console" /> </Root> </Loggers> </Configuration> ``` 此配置将 `com.example.mapper` 包下的 SQL 日志以 `DEBUG` 级别输出到 `mybatis.log` 文件中,并按月份滚动归档日志文件[^1]。 #### 3. 配置 MyBatis 使用 Log4j2MyBatis 的配置文件中(如 `mybatis-config.xml`),指定日志实现为 Log4j2[^2]。 ```xml <configuration> <settings> <setting name="logImpl" value="LOG4J2" /> </settings> </configuration> ``` 如果项目使用的是 Spring Boot,则可以在 `application.yml` 或 `application.properties` 中配置 MyBatis日志实现[^3]。 ```yaml mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.log4j2.Log4j2Impl ``` #### 4. 检查日志输出 确保日志配置文件中设置了正确的包路径和日志级别。例如,如果 MyBatis 的 Mapper 接口位于 `com.example.mapper` 包下,则需要在 Log4j2 配置中定义相应的 Logger[^1]。 ### 注意事项 - 如果终端或日志文件中未显示 MyBatisSQL 日志,请检查是否正确配置了 `logImpl` 属性,并确保日志框架的版本与 MyBatis 兼容。 - 在生产环境中,建议调整日志级别以避免过多的日志输出影响性能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值