1.简单说明
p6spy 类似于 druid 可以拦截 SQL 可以用于项目调试,直接引入 p6spy 的博文已经很多了,这里主要是介绍一下 springboot 使用 p6spy-spring-boot-starter 如何进行配置。
2.核心依赖
xml
<dependency>
<groupId>com.github.gavlyukovskiy</groupId>
<artifactId>p6spy-spring-boot-starter</artifactId>
<version>1.7.1</version>
</dependency>
3.主要配置
主要是【spring.datasource.driver-class-name】和【decorator.datasource.p6spy】相关配置。
yaml
spring:
datasource:
url: jdbc:p6spy:postgresql://xxx.xx.xxx.xxx:2345/gpdb
username: gpadmin
password: gpadmin
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
type: com.alibaba.druid.pool.DruidDataSource
decorator:
datasource:
p6spy:
logging: file
log-file: spy.log
log-format: executionTime:%(executionTime) | sql:%(sqlSingleLine)
4.简单测试
调用项目中的某个接口之后...可以看到在当前项目的文件夹下生成了 spy.log 文件,且输出的格式跟 log-format 配置的是一致的。
java
executionTime:43 | sql:SELECT * FROM yz_test_match ytm WHERE ytm.field = '豫A666666';
5.其他配置
logging: file 模式可以保存所有执行的SQL信息,在我们调试项目的时候,如果我们只需要控制台打印,那么配置如下:
yaml
decorator:
datasource:
p6spy:
logging: slf4j
输出结果如下:
java
2021-07-19 15:00:56.523 INFO 2948 --- [nio-8088-exec-6] p6spy :
executionTime:42 | sql:SELECT * FROM yz_test_match ytm WHERE ytm.field = '豫A666666';
6.小小的总结
本文介绍了在Spring Boot项目中集成p6spy-spring-boot-starter监控数据库的方法。主要内容包括:
- 1)引入核心依赖;
- 2)配置数据源driver-class-name为P6SpyDriver并设置日志格式;
- 3)支持file和slf4j两种日志输出模式;
- 4)测试验证SQL监控功能。
该方案可方便地拦截和记录SQL执行情况,便于项目调试,比直接使用p6spy更简便。