前言

无论使用原生JDBC、mybatis还是hibernate,使用log4j等日志框架可以看到生成的SQL,但是占位符和参数总是分开打印的,不便于分析,显示如下的效果:
在这里插入图片描述
在这里插入图片描述

Log4jdbc 是一个开源 SQL 日志框架,它使用代理模式实现对常用的 JDBC Driver( Oracle , Derby , MySQL , PostgreSQL , H2 ,等)操作的拦截,记录真实 SQL ,可以将占位符与参数全部合并在一起显示,方便直接拷贝 SQL 在 MySQL 等客户端直接执行,加快调试速度。

版本

  • springboot
    2.6.3
  • spring-cloud-starter-alibaba
    2021.0.1.0
  • mybatis-plus-boot-starter
    3.4.3.4
  • 数据库驱动
<dependency>
    <groupId>com.oracle.ojdbc</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>19.3.0.0</version>
</dependency>

添加log4jdbc依赖

<dependency>
    <groupId>org.bgee.log4jdbc-log4j2</groupId>
    <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
    <version>1.16</version>
    <scope>runtime</scope>
</dependency>

在resources目录下添加log4jdbc.log4j2.properties文件

# 指定驱动
log4jdbc.drivers=oracle.jdbc.OracleDriver
#毫秒值.执行时间超过该值的SQL语句将被记录为warn级别
log4jdbc.sqltiming.warn.threshold=2000
#毫秒值.执行时间超过该值的SQL语句将被记录为error级别
log4jdbc.sqltiming.error.threshold=3000
#修剪已记录的SOL
log4jdbc.trim.sql=true
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
# 禁止自动加载最常用驱动
log4jdbc.auto.load.popular.drivers=false

替换jdbc驱动

在这里插入图片描述

logback-spring.xml设置log4jdbc日志输出级别

<!--  慢sql耗时log begin-->
    <logger name="jdbc.connection" level="OFF"/>
    <logger name="jdbc.resultset" level="OFF"/>
    <logger name="jdbc.resultsettable" level="OFF"/>
    <logger name="jdbc.audit" level="OFF"/>
    <logger name="jdbc.sqltiming" level="WARN"/>
    <logger name="jdbc.sqlonly" level="OFF"/>
    <!--  慢sql耗时log end-->
    <springProfile name="local">
        <!--  慢sql耗时log,local环境调低级别  -->
        <logger name="jdbc.sqltiming" level="INFO"/>
        <logger name="jdbc.resultsettable" level="INFO"/>
        <root level="DEBUG">
            <appender-ref ref="console" />
            <appender-ref ref="async"/>
        </root>
    </springProfile>

去除mybatis-plus sql控制台输出

在这里插入图片描述

效果图

在这里插入图片描述
从效果图可以看到,log出的sql是完整的,不会像mybatis sql包含占位符,参数与sql分别输出的情况,这样非常便于我们进行sql分析。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐