前置
你使用:
- springboot
- java
- mybatis
- log4j2 日志
配置
在 src/main/resources/log4j2.xml 中配置 MyBatis Mapper 包的日志级别为 DEBUG,并指定输出目标(控制台或文件)
<?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} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<!-- 根日志级别 -->
<Root level="INFO">
<AppenderRef ref="Console"/>
</Root>
<!-- MyBatis Mapper 包的 SQL 日志(DEBUG 级别) -->
<Logger name="com.example.mapper" level="DEBUG" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
<!-- MyBatis 核心日志(DEBUG) -->
<Logger name="org.mybatis" level="DEBUG" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
<!-- JDBC 底层日志(TRACE,可选) -->
<Logger name="java.sql" level="TRACE" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
</Loggers>
</Configuration>
additivity=“false” 表示不将日志传递给父级 Logger(避免重复输出)
输出样例
DEBUG [main] com.example.mapper.UserMapper - ==> Preparing: SELECT * FROM users WHERE id = ?
DEBUG [main] com.example.mapper.UserMapper - ==> Parameters: 1(Long)
DEBUG [main] com.example.mapper.UserMapper - <== Total: 1
建议
实际开发中,生产/开发/测试环境,不同的环境对应各自的 log4j2.xml
开发测试环境你可以配置上这个,方便快速定位问题,生产环境不建议开启,开也是临时开启为了排查线上问题