Springboot整合p6spy实现sql监控

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Springboot整合p6spy实现sql监控

P6Spy是一个框架,该框架使数据库数据可以无缝地被拦截和记录,而无需对应用程序进行任何代码更改


     在开发的过程中,我们经常会遇到由于sql语句书写错误导致的bug,那么如何来解决这种困扰呢?如果方法执行完了可以打印出完整的sql语句,就可以方便我们判断执行的是否正确,所以我们希望有一个可以打印sql语句的插件。p6spy就是一款这样的工具,下面给大家介绍一下p6spy的使用。

因为mybatis在打印SQL语句的时候参数为?而我们需要查看参数的具体数值,所以我们要加入我们的SQL日志打印工具p6spy


在项目的pom文件中引入p6spy所需jar包的坐标



    <dependency>   
    <groupId>p6spy</groupId> 
    <artifactId>p6spy</artifactId> 
    <version>3.8.0</version>
    </dependency>

    在配置文件中修改数据库连接池的地址,本次使用的是application.yml


    在数据库连接URL中加入p6spy




    定义一个自定义打印日志类P6SpyLogger

    public class P6SpyLogger implements MessageFormattingStrategy {
        private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
        @Override
        public 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()) + " | took " + elapsed + "ms | " + category + " | connection " + connectionId + "\n " + sql + ";" : "";
        }
    }

    之后在resources文件夹下新建一个spy.properties文件

    module.log=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory
    # 自定义日志打印
    logMessageFormat=com.tfjybj.lap.common.log.P6SpyLogger //自定义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.cj.jdbc.Driver
    # 是否开启慢SQL记录
    outagedetection=true
    # 慢SQL记录标准 秒
    outagedetectioninterval=2

    之后进行测试,就可以查看我们查询的具体参数了


    相关实践学习
    日志服务之使用Nginx模式采集日志
    本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
    目录
    相关文章
    |
    1月前
    |
    监控 Java 数据库连接
    Spring Boot中的健康检查和监控
    Spring Boot中的健康检查和监控
    |
    18天前
    |
    SQL 监控 Java
    SQL质量监控
    为帮助用户管理和优化SLS中的SQL查询,提供了用户级SQL质量监控功能,集成于CloudLens for SLS。开启服务后约10分钟,用户可在「报表中心 / SQL质量监控」中查看数据。 该功能包括: SQL健康分和使用报告:反馈总体质量。 服务指标:如请求PV数、平均延时等,用于业务分析。 运行指标:如并发请求、处理数据量等。 SQL Pattern分析:提炼SQL语义特征,识别业务特征。 质量优化建议:基于请求成功率和错误码分布给出改进建议。 监控功能以分钟为单位聚合分析数据,不包括JDBC接入和ScheduledSQL流量,并可能随产品发展而调整。这些功能有助于用户全面掌握SQL
    SQL质量监控
    WXM
    |
    26天前
    |
    SQL 运维 分布式计算
    如何做好SQL质量监控
    为满足用户对SQL分析行为的监控和质量管理需求,我们推出了用户级SQL质量监控功能。此功能集成于CloudLens for SLS中,可轻松开启以监控和管理所有SLS相关资源(包括采集接入、读写操作、作业、配额、SQL、计费等)。
    WXM
    15 2
    如何做好SQL质量监控
    |
    23天前
    |
    监控 druid Java
    spring boot 集成配置阿里 Druid监控配置
    spring boot 集成配置阿里 Druid监控配置
    121 6
    |
    1月前
    |
    存储 监控 数据库
    局域网监控软件中的Transact-SQL事务管理
    **T-SQL事务管理**确保数据的原子性、一致性、隔离性和持久性。使用`BEGIN TRANSACTION`, `COMMIT`和`ROLLBACK`来控制事务。例如,在更新账户余额的事务中,如果所有操作成功则提交,否则回滚。错误处理通过`TRY-CATCH`结构实现,嵌套事务允许在事务内开启新的事务。通过触发器和存储过程,如`DataChangeTrigger`和`SubmitDataToWebsite`,可以自动化数据提交到网站,当表数据变动时触发。
    27 5
    |
    1月前
    |
    监控 Java 微服务
    Spring Boot微服务部署与监控的实战指南
    【7月更文挑战第19天】Spring Boot微服务的部署与监控是保障应用稳定运行和高效维护的重要环节。通过容器化部署和云平台支持,可以实现微服务的快速部署和弹性伸缩。而利用Actuator、Prometheus、Grafana等监控工具,可以实时获取应用的运行状态和性能指标,及时发现并解决问题。在实际操作中,还需根据应用的具体需求和场景,选择合适的部署和监控方案,以达到最佳效果。
    |
    1月前
    |
    Prometheus 监控 Cloud Native
    使用Spring Boot和Prometheus进行监控
    使用Spring Boot和Prometheus进行监控
    |
    1月前
    |
    运维 Prometheus 监控
    Spring Boot中使用Actuator监控应用状态
    Spring Boot中使用Actuator监控应用状态
    |
    2月前
    |
    运维 监控 Java
    Spring Boot中使用Actuator进行监控
    Spring Boot中使用Actuator进行监控
    |
    1月前
    |
    Prometheus 监控 Cloud Native
    Spring Boot中使用Micrometer进行指标监控
    Spring Boot中使用Micrometer进行指标监控