Spring Boot结合P6Spy的实例分析
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇文章给大家介绍Spring Boot结合P6Spy的实例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一:pom.xml 中添加依赖
千家信息网最后更新 2025年01月31日Spring Boot结合P6Spy的实例分析
这篇文章给大家介绍Spring Boot结合P6Spy的实例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
一:pom.xml 中添加依赖
p6spy p6spy 3.8.0
二:application.xml 修改数据源配置
spring: datasource: type: com.zaxxer.hikari.HikariDataSource url: jdbc:p6spy:mysql://... username: ... password: ... driver-class-name: com.p6spy.engine.spy.P6SpyDriver
三:配置文件spy.properties
module.log=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory# 自定义日志打印logMessageFormat=org.pkaq.core.log.P6SpyLogger# 使用日志系统记录sqlappender=com.p6spy.engine.spy.appender.Slf4JLogger## 配置记录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
四:自定义日志打印
实现MessageFormattingStrategy接口方式
public class P6SpyLogger implements MessageFormattingStrategy { @Overridepublic String formatMessage(int connectionId, String now, long elapsed, String category, String prepared, String sql) { return !"".equals(sql.trim()) ? "[ " + LocalDateTime.now() + " ] --- | took " + elapsed + "ms | " + category + " | connection " + connectionId + "\n " + sql + ";" : ""; }}
2.在spy.properties文件中指定方式
logMessageFormat=com.p6spy.engine.spy.appender.CustomLineFormatcustomLogMessageFormat=%(currentTime) | SQL耗时: %(executionTime) ms | 连接信息: %(category)-%(connectionId) | 执行语句: %(sql)
五:spy.properties参数详细说明
# 指定应用的日志拦截模块,默认为com.p6spy.engine.spy.P6SpyFactory #modulelist=com.p6spy.engine.spy.P6SpyFactory,com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory# 真实JDBC driver , 多个以 逗号 分割 默认为空#driverlist=# 是否自动刷新 默认 flase#autoflush=false# 配置SimpleDateFormat日期格式 默认为空#dateformat=# 打印堆栈跟踪信息 默认flase#stacktrace=false# 如果 stacktrace=true,则可以指定具体的类名来进行过滤。#stacktraceclass=# 监测属性配置文件是否进行重新加载#reloadproperties=false# 属性配置文件重新加载的时间间隔,单位:秒 默认60s#reloadpropertiesinterval=60# 指定 Log 的 appender,取值:#appender=com.p6spy.engine.spy.appender.Slf4JLogger#appender=com.p6spy.engine.spy.appender.StdoutLogger#appender=com.p6spy.engine.spy.appender.FileLogger# 指定 Log 的文件名 默认 spy.log#logfile=spy.log# 指定是否每次是增加 Log,设置为 false 则每次都会先进行清空 默认true#append=true# 指定日志输出样式 默认为com.p6spy.engine.spy.appender.SingleLineFormat , 单行输出 不格式化语句#logMessageFormat=com.p6spy.engine.spy.appender.SingleLineFormat# 也可以采用 com.p6spy.engine.spy.appender.CustomLineFormat 来自定义输出样式, 默认值是%(currentTime)|%(executionTime)|%(category)|connection%(connectionId)|%(sqlSingleLine)# 可用的变量为:# %(connectionId) connection id# %(currentTime) 当前时间# %(executionTime) 执行耗时# %(category) 执行分组# %(effectiveSql) 提交的SQL 换行# %(effectiveSqlSingleLine) 提交的SQL 不换行显示# %(sql) 执行的真实SQL语句,已替换占位# %(sqlSingleLine) 执行的真实SQL语句,已替换占位 不换行显示#customLogMessageFormat=%(currentTime)|%(executionTime)|%(category)|connection%(connectionId)|%(sqlSingleLine)# date类型字段记录日志时使用的日期格式 默认dd-MMM-yy#databaseDialectDateFormat=dd-MMM-yy# boolean类型字段记录日志时使用的日期格式 默认boolean 可选值numeric#databaseDialectBooleanFormat=boolean# 是否通过jmx暴露属性 默认true#jmx=true# 如果jmx设置为true 指定通过jmx暴露属性时的前缀 默认为空# com.p6spy(.)?:name= #jmxPrefix=# 是否显示纳秒 默认false#useNanoTime=false# 实际数据源 JNDI#realdatasource=/RealMySqlDS# 实际数据源 datasource class#realdatasourceclass=com.mysql.jdbc.jdbc2.optional.MysqlDataSource# 实际数据源所携带的配置参数 以 k=v 方式指定 以 分号 分割#realdatasourceproperties=port;3306,serverName;myhost,databaseName;jbossdb,foo;bar# jndi数据源配置 # 设置 JNDI 数据源的 NamingContextFactory。 #jndicontextfactory=org.jnp.interfaces.NamingContextFactory# 设置 JNDI 数据源的提供者的 URL。 #jndicontextproviderurl=localhost:1099# 设置 JNDI 数据源的一些定制信息,以分号分隔。 #jndicontextcustom=java.naming.factory.url.pkgs;org.jboss.naming:org.jnp.interfaces# 是否开启日志过滤 默认false, 这项配置是否生效前提是配置了 include/exclude/sqlexpression#filter=false# 过滤 Log 时所包含的表名列表,以逗号分隔 默认为空#include=# 过滤 Log 时所排除的表名列表,以逗号分隔 默认为空#exclude=# 过滤 Log 时的 SQL 正则表达式名称 默认为空#sqlexpression=#显示指定过滤 Log 时排队的分类列表,取值: error, info, batch, debug, statement,#commit, rollback, result and resultset are valid values# (默认 info,debug,result,resultset,batch)#excludecategories=info,debug,result,resultset,batch# 是否过滤二进制字段# (default is false)#excludebinary=false# P6Log 模块执行时间设置,整数值 (以毫秒为单位),只有当超过这个时间才进行记录 Log。 默认为0#executionThreshold=# P6Outage 模块是否记录较长时间运行的语句 默认false# outagedetection=true|false# P6Outage 模块执行时间设置,整数值 (以秒为单位)),只有当超过这个时间才进行记录 Log。 默认30s# outagedetectioninterval=integer time (seconds)
关于Spring Boot结合P6Spy的实例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
配置
数据
数据源
日志
时间
文件
格式
语句
实际
属性
日期
模块
信息
单位
字段
方式
逗号
输出
实例
实例分析
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库运维过程
软件开发转售前工程师面试
软件开发权申请
门户网络安全保卫工作汇报
关于我区网络安全现状
如何写学校网络安全自查报告
企友3e软件数据库版本升级
深圳办公系统软件开发服务费
软件开发与运维工程师工资
网络安全厂商有哪些产品
软件开发的环节有哪些
单位的服务器工作站 配置要求
重庆戴尔服务器虚拟化云主机
王者在我的服务器内隐藏
正数网络技术有限公司网站
加强网络安全培训简报
服务器散热处理器种类
口袋妖怪go服务器查询
软件开发实习多久
太原检查网络安全
软件开发类职称包括哪些
c 一般采用什么数据库
自动回收Q币软件开发
周汉华 网络安全法的范围
美篇用的什么网络技术
自考计算机网络技术学什么
制作网络病毒不影响网络安全
深圳墨叽互联网科技公司
邮箱服务器总是访问我的电脑
长安软件开发 工资