基于 P6Spy 的 SQL 监控自动配置模块,通过 EnvironmentPostProcessor 在 Spring Boot 启动时动态配置 P6Spy 参数,支持在 application.yml 中配置所有 P6Spy 原生属性。
功能特性
-
自动将
application.yml中的 P6Spy 配置映射到 P6Spy 原生属性 -
支持标准驼峰和短横线(kebab-case)两种属性命名方式
-
通过
EnvironmentPostProcessor实现环境变量动态配置 -
启用后自动将 JDBC 驱动替换为 P6Spy 代理驱动
-
支持
P6SpyCoverSpringBootEnvironmentPostProcessor在不引入 spring-boot-starter 时独立使用
配置
think:
p6spy:
config:
# 是否启用,默认启用
enabled: true
# JDBC 驱动列表(逗号分隔)
driverlist: com.mysql.cj.jdbc.Driver
# 日志文件路径
logfile: spy.log
# 日志消息格式类
log-message-format: com.p6spy.engine.spy.appender.SingleLineFormat
# 是否追加日志
append: true
# 日期格式
dateformat: yyyy-MM-dd HH:mm:ss
# Appender 类型
appender: com.p6spy.engine.spy.appender.FileLogger
# 模块列表
modulelist: com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.spy.P6SpyFactory
# 打印堆栈
stacktrace: false
# JMX 暴露
jmx: true
# 自动刷新
autoflush: false
# 重新加载属性
reloadproperties: false
# 重新加载间隔(秒)
reloadpropertiesinterval: 60
配置属性一览
基础配置
属性 |
默认值 |
说明 |
think.p6spy.config.enabled |
true |
是否启用 P6Spy |
think.p6spy.config.driverlist |
空 |
JDBC 驱动列表,逗号分隔 |
think.p6spy.config.logfile |
spy.log |
日志文件路径 |
think.p6spy.config.log-message-format |
SingleLineFormat |
日志消息格式类 |
think.p6spy.config.append |
true |
是否追加日志 |
think.p6spy.config.dateformat |
空 |
日期格式 |
think.p6spy.config.appender |
FileLogger |
Appender 类型 |
think.p6spy.config.modulelist |
P6LogFactory, P6SpyFactory |
启用的模块列表 |
高级配置
属性 |
默认值 |
说明 |
think.p6spy.config.stacktrace |
false |
是否打印堆栈 |
think.p6spy.config.stacktraceclass |
空 |
堆栈过滤类名 |
think.p6spy.config.jmx |
true |
是否通过 JMX 暴露配置 |
think.p6spy.config.jmx-prefix |
空 |
JMX 前缀 |
think.p6spy.config.autoflush |
false |
是否自动刷新 |
think.p6spy.config.reloadproperties |
false |
是否支持热加载配置 |
think.p6spy.config.reloadpropertiesinterval |
60 |
热加载间隔(秒) |
think.p6spy.config.custom-log-message-format |
空 |
自定义日志消息格式模板 |
自定义事件监听器
可以通过 modulelist 配置自定义 JdbcEventListener 实现类,例如使用 db-change 模块的变更追踪监听器:
think:
p6spy:
config:
modulelist: com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.spy.P6SpyFactory,com.luamas.thinkbridge.common.dbchange.ThinkBridgeP6spyEventListener
独立使用(数据变更追踪)
配合 db-change 模块实现数据变更追踪,只需引入依赖并配置上述 modulelist 即可开箱使用。框架会自动捕获所有 INSERT/UPDATE/DELETE 操作,完成新旧值对比,并通过管道广播给监听器。详细用法请参考 数据变更追踪 文档。