springboot mybatis-plus慢sql输出日志,log4jdbc使用

前言

无论使用原生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.ojdbcgroupId>
    <artifactId>ojdbc8artifactId>
    <version>19.3.0.0version>
dependency>

添加log4jdbc依赖

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

添加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驱动

springboot mybatis-plus慢sql输出日志,log4jdbc使用_第1张图片

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


    <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"/>
    
    <springProfile name="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控制台输出

springboot mybatis-plus慢sql输出日志,log4jdbc使用_第2张图片

效果图

springboot mybatis-plus慢sql输出日志,log4jdbc使用_第3张图片
从效果图可以看到,log出的sql是完整的,不会像mybatis sql包含占位符,参数与sql分别输出的情况,这样非常便于我们进行sql分析。

你可能感兴趣的:(mybatis,log4j,spring,boot)