当前位置: 首页 > news >正文

21、p6spy输出执行SQL日志

文章目录

  • 1、背景
  • 2、简介
  • 3、接入
    • 3.1、 引入依赖
    • 3.2、修改database参数:
    • 3.3、 创建P6SpyLogger类,自定义日志格式
    • 3.4、添加spy.properties
    • 3.5、 输出样例
  • 4、补充
    • 4.1、参数说明

1、背景

在开发的过程中,总希望方法执行完了可以看到完整是sql语句,从而判断执行的是否正确,所以就希望有一个可以打印sql语句的插件。

2、简介

p6spy 是数据库动态监控的一种框架,是一个可以用来监控JDBC执行语句的开源产品,它可以使得数据库数据无缝拦截和操作,而不必对现有应用程序的代码作任何修改。利用p6spy很容易的就能监控到JDBC中执行的SQL语句,便于系统调试和性能调优。p6spy分发包括P6Log,它是一个可记录任何Java应用程序的所有JDBC事务的应用程序。其配置完成使用时,可以进行数据访问性能的监测。

p6spy 实现原理是对JDBC的关键类进行了一次包装,让应用系统调用自己的类;自己的类截获到SQL语句后再调用真实的JDBC驱动进行执行SQL,这样,在自己的类里面就可以监控到所有的SQL语句。

GitHub地址:https://github.com/p6spy/p6spy
官网地址:https://p6spy.readthedocs.io/en/latest/index.html#
仓库地址:https://mvnrepository.com/artifact/p6spy/p6spy

3、接入

3.1、 引入依赖

gradle:

// https://mvnrepository.com/artifact/p6spy/p6spy
implementation 'p6spy:p6spy:3.9.1'

maven:

<!-- https://mvnrepository.com/artifact/p6spy/p6spy -->
<dependency><groupId>p6spy</groupId><artifactId>p6spy</artifactId><version>3.9.1</version>
</dependency>

3.2、修改database参数:

spring:datasource:driver-class-name: com.p6spy.engine.spy.P6SpyDriverurl: jdbc:p6spy:mysql://XXXX:3306/datasource?characterEncoding=utf8

3.3、 创建P6SpyLogger类,自定义日志格式

package com.XXX.config;import com.p6spy.engine.spy.appender.MessageFormattingStrategy;
import java.text.SimpleDateFormat;
import java.util.Date;
/*** @author :* @date :Created in 14:45 2023/7/25* @description :* @version: 1.0*/
public class P6SpyLogger implements MessageFormattingStrategy {private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");@Overridepublic String formatMessage(int connectionId, String now, long elapsed, String category, String prepared, String sql, String s4) {return !"".equals(sql.trim())? this.format.format(new Date()) + "[INFO] | took " + elapsed + "ms | " + category + "\n " + sql + ";": "[INFO][]";}
}

3.4、添加spy.properties

module.log=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory
# 自定义日志打印
# 自定义P6SpyLogger类的地址
logMessageFormat=com.XXX.config.P6SpyLogger
# 使用日志系统记录sql
appender=com.p6spy.engine.spy.appender.StdoutLogger
## 配置记录Log例外
excludecategories=info,debug,result,batc,resultset
# 设置使用p6spy driver来做代理
deregisterdrivers=true
# 日期格式
dateformat=yyyy-MM-dd HH:mm:ss
# 实际驱动
driverlist=com.mysql.jdbc.Driver
# 是否开启慢SQL记录
outagedetection=true
# 慢SQL记录标准 秒
outagedetectioninterval=2

3.5、 输出样例

2023-07-25 10:22:24:090 | took 8ms | statementselect * from t_user where id = 1;

4、补充

4.1、参数说明

在这里插入图片描述

http://www.lryc.cn/news/114349.html

相关文章:

  • 实力认证!TDengine 入选 Gartner 中国数据分析与人工智能技术成熟度曲线
  • 如何将jar包部署到宝塔
  • el-tree-select那些事
  • 分布式任务调度框架之开山鼻祖:Quartz
  • Django实现音乐网站 ⑺
  • PO、DTO和VO的区别
  • ReadableStream流的js处理
  • 图扑软件入选 2023 中国信通院“铸基计划”全景图
  • Go Fyne:一种现代的,跨平台的 GUI 开发工具集
  • React Dva 操作models中的subscriptions讲述监听
  • 标准化归一化 batch norm, layer norm, group norm, instance norm
  • Zabbix监控系统详解及配置
  • 【100天精通python】Day29:文件与IO操作_XML文件处理
  • 人工智能的未来:探索下一代生成模型
  • C++ 运算符重载为非成员函数
  • [国产MCU]-BL602开发实例-定时器
  • re学习(29)攻防世界-CatFly(复原反汇编)
  • Android WIFI-概率性不能自连
  • 用Python批量复制文件,方法有9种,方便快捷
  • 《凤凰架构》第一章——服务架构演进史
  • 【iPhone】手机还有容量,拍视频却提示 iPhone 储存空间已满
  • pycharm中opencv库导入 cv2. 无函数提示跳出解决方法
  • week3
  • LeetCode28.找出字符串中第一个匹配项的下标
  • 爬虫009_字符串高级_替换_去空格_分割_取长度_统计字符_间隔插入---python工作笔记028
  • Windows 安装Tensorflow2.1、Pycharm开发环境
  • 【javaScript】数组的常用方法(自用记忆版)
  • 全新二开美化版UI好看的社区源码下载/反编译版
  • Docker 发布一个springboot项目
  • 办公信息系统安全基本技术要求