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

2024-01-07 23:27:04

前言

无论使用原生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
    min-idle: 2

在项目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

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

效果图

在这里插入图片描述

文章来源:https://blog.csdn.net/qq_41633199/article/details/135396039
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。