P6Spy/HikariCP
时间: 2025-02-09 16:58:51 浏览: 40
### P6Spy与HikariCP集成配置使用
#### 配置概述
为了实现P6Spy与HikariCP之间的无缝协作,需要调整`p6spy.properties`文件以及HikariCP的数据源设置。通过这种方式可以监控并记录SQL查询语句及其执行时间。
#### 修改 `p6spy.properties`
确保在项目的根目录下存在名为`p6spy.properties`的配置文件,并包含如下内容:
```properties
modulelist=com.p6spy.engine.spy.P6SpyFactory
driverlist=org.postgresql.Driver,com.mysql.cj.jdbc.Driver
realdriver=com.zaxxer.hikari.HikariDataSource
logMessageFormat=com.p6spy.engine.spy.appender.Slf4JLogger
appender=com.p6spy.engine.spy.appender.Slf4JAppender
excludecategories=info,debug,result,batch
includeexecutiontime=true
```
上述配置指定了要使用的模块列表、驱动程序名称、实际数据源类名以及其他日志选项[^1]。
#### 调整 HikariCP 数据源属性
当利用Spring Boot框架时,在`application.yml`或`application.properties`中定义HikariCP连接池参数的同时指定代理后的数据库URL:
对于YAML格式的应用配置文件(`application.yml`)来说,
```yaml
spring:
datasource:
url: jdbc:p6spy:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC
username: root
password: secret
type: com.zaxxer.hikari.HikariDataSource
hikari:
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
```
而对于`.properties`风格,则应如此编写:
```properties
spring.datasource.url=jdbc:p6spy:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=secret
spring.datasource.type=com.zaxxr.hikari.HikariDataSource
spring.datasource.driverClassName=com.p6spy.engine.spy.P6SpyDriver
```
这里的关键在于将原始的JDBC URL替换为带有`jdbc:p6spy:`前缀的形式,并且把默认的驱动器更改为`P6SpyDriver`以便拦截所有的SQL请求[^2]。
#### 测试验证
完成以上更改之后启动应用程序,此时任何由HikariCP管理下的Connection对象发起的操作都会被P6Spy捕获到;同时这些操作的信息会被发送给已注册的日志追加器(如SLF4J),从而可以在控制台或者其他地方查看详细的SQL执行情况。
阅读全文
相关推荐










