googlecode.log4jdbc慢sql日志,格式化sql

前言

无论使用原生JDBC、mybatis还是hibernate,使用log4j等日志框架可以看到生成的SQL,但是占位符和参数总是分开打印的,不便于分析,显示如下的效果:
在这里插入图片描述
在这里插入图片描述
googlecode Log4jdbc 是一个开源 SQL 日志组件,它使用代理模式实现对常用的 JDBC Driver( Oracle , Derby , MySQL , PostgreSQL , H2 ,等)操作的拦截,记录真实 SQL ,可以将占位符与参数全部合并在一起显示,方便直接拷贝 SQL 在 MySQL 等客户端直接执行,加快调试速度,还有个类似功能的组件bgee.log4jdbc-log4j2。

版本

  • springboot
    2.6.3
  • spring-cloud-starter-alibaba
    2021.0.1.0
  • mybatis-plus-boot-starter
    3.4.3.4
  • 数据库驱动
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-jdbc</artifactId>
  <version>2.6.3</version>
</dependency>

添加log4jdbc依赖

<dependency>
	<groupId>com.googlecode.log4jdbc</groupId>
	<artifactId>log4jdbc</artifactId>
	<scope>runtime</scope>
	<version>1.2</version>
</dependency>

替换jdbc驱动

spring:
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
#    driver-class-name: com.mysql.cj.jdbc.Driver
    driver-class-name: net.sf.log4jdbc.DriverSpy
    username: root
    password: 123456
#    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
    url: jdbc:log4jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
    hikari:
      minimum-idle: 1
      maximum-pool-size: 5
      auto-commit: true
      read-only: false
      connection-init-sql: SELECT 1 FROM DUAL
      connection-test-query: SELECT 1 FROM DUAL
      pool-name: HikariCP
      idle-timeout: 30000
      connection-timeout: 30000
      max-lifetime: 300000

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

# 关闭自动加载受欢迎驱动
log4jdbc.auto.load.popular.drivers=false
log4jdbc.drivers=com.mysql.cj.jdbc.Driver
#毫秒值.执行时间超过该值的SQL语句将被记录为error级别
log4jdbc.sqltiming.error.threshold=3000
#毫秒值.执行时间超过该值的SQL语句将被记录为warn级别
log4jdbc.sqltiming.warn.threshold=2000
#修剪已记录的SOL
log4jdbc.trim.sql=true

更多配置可以观察源码
在这里插入图片描述

效果图

在这里插入图片描述

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值