p6使用教程_p6slite使用说明书

p6使用教程_p6slite使用说明书最近开发中用到spring-data-jpa+hibernate的持久层框架,在调试过程中,日志记录的hibernateSQL执行语句无法显示传入的参数,所以上github上搜索了一番,发现了p6spy这个框架,此框架能够无缝地拦截和记录数据库的执行语句,而不会对现有应用程序进行代码更改。下面介绍一下p6spy的简单配置和使用。源码https://github.com/p6s…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

最近开发中用到 spring-data-jpa + hibernate 的持久层框架,在调试过程中,日志记录的hibernate SQL执行语句无法显示传入的参数,所以上github上搜索了一番,发现了p6spy这个框架,此框架能够无缝地拦截和记录数据库的执行语句,而不会对现有应用程序进行代码更改。下面介绍一下p6spy的简单配置和使用。

源码

https://github.com/p6spy/p6spy

导包

http://mvnrepository.com/artifact/p6spy/p6spy

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

配置

1、复制源码中 p6spy/src/main/assembly/individualFiles/spy.properties 文件到Maven项目的resource目录下
2、根据需要配置 spy.properties 选项值

#项目数据库驱动
driverlist=com.mysql.jdbc.Driver
#日期格式
dateformat=yyyy-MM-dd HH:mm:ss
#sql输出样式(此为我自定义的)
logMessageFormat=com.p6spy.engine.spy.appender.PrettySqlMultiLineFormat

#sql输出方式
#appender=com.p6spy.engine.spy.appender.Slf4JLogger
appender=com.p6spy.engine.spy.appender.StdoutLogger
#appender=com.p6spy.engine.spy.appender.FileLogger

3、项目数据源配置
jdbc.driver 替换为 com.p6spy.engine.spy.P6SpyDriver
jdbc.url 替换为 jdbc:p6spy:mysql:/xxx

问题

1、原生的sql语句样式是单行的,如何格式化
改动源码,创建一个类自定义输出格式,重新打包发布到自己的本地库

package com.p6spy.engine.spy.appender;

import org.hibernate.engine.jdbc.internal.BasicFormatterImpl;
import org.hibernate.engine.jdbc.internal.Formatter;

/** * 优化sql输出格式,采用hibernate的 Formatter */
public class PrettySqlMultiLineFormat implements MessageFormattingStrategy { 
   

    private static final Formatter formatter;

    static {
        formatter = new BasicFormatterImpl();
    }

  /** * Formats a log message for the logging module * * @param connectionId the id of the connection * @param now the current ime expressing in milliseconds * @param elapsed the time in milliseconds that the operation took to complete * @param category the category of the operation * @param prepared the SQL statement with all bind variables replaced with actual values * @param sql the sql statement executed * @return the formatted log message */
    @Override
    public String formatMessage(final int connectionId, final String now, final long elapsed, final String category, final String prepared, final String sql) {
      return "\n#" + now + " | took " + elapsed + "ms | " + category + " | connection " + connectionId + formatter.format(sql) +";";
    }
}

spy.properties 中 logMessageFormat=com.p6spy.engine.spy.appender.PrettySqlMultiLineFormat

2、与日志框架的结合
我项目的日志框架是 slf4j + log4j2 的组合,不需要改动日志配置,p6spy可以无缝结合。

3、精简配置
如果只是自己开发调试时用,可以对p6spy定制,从github上下载源码,直接把spy.properties放到源码项目的resource目录下进行配置,然后发布到本地Maven库中,项目要用时只要在pom.xml中引入依赖就,修改数据库驱动和地址,不需要在项目中配置spy.properties文件了。
这里写图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185320.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 对CAB文件进行数字签名

    对CAB文件进行数字签名

    2021年11月16日
  • 十进制的小数转换为二进制的方法_二进制转十进制公式

    十进制的小数转换为二进制的方法_二进制转十进制公式今天在学习十进制与二进制的相互转换,学到小数的十进制转换到二进制时,所以我想着能不能用我这菜鸡技术,利用C++来实现只把十进制小数转换成二进制。【思路】输入要计算的二进制小数部分“decimals”以及要计算出的二进制位数循环while()部分●进行小数*2的运算,只输出整数部分(获得二进制数值),这部分利用了floor()函数,它会返回比参数小的最大整数●把整数…

  • 如何理解css中的float

    最近一段时间一直在为一个即将上线的新站进行一些前端开发。自然,对CSS的使用是必不可少的了。我们在CSS中很多时候会用到浮动来布局。常见的有float:left或者float:right。简单点来说,

    2021年12月20日
  • Windows命令之ftp命令「建议收藏」

    Windows命令之ftp命令「建议收藏」FTP(FileTransferProtocol,文件传输协议)是TCP/IP协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。windows终端默认安装ftp客户端,我们可以通过ftp命令执行文件的上传和下载。博文环境如下

  • 单片机引脚控制继电器最简单的电路方式

    单片机引脚控制继电器最简单的电路方式首先要明确一点:单片机不能直接控制继电器,不管是3v的继电器还是5v的继电器。原因:比如51单片机和msp430单片机,引脚不能直接接继电器。虽然引脚的电压足够,但是由于电流不够,所以本应该闭合的线圈不会闭合。需要增加一个三极管来放大电流。说是放大电流,其实本质上是把引脚当成一个开关来控制真正3.3v电压的开合。下图是在实践中自己设计的可以正常工作的继电器模块。

  • webgame开发入门[通俗易懂]

    webgame开发入门[通俗易懂]一、简单的程序框架。webgame程序构成:三大部分。第一是数据流程。第二是程序。第三是美术。其中,数据流程包括了功能。也只有在功能中才能体现数据流程。数据流程相当的麻烦,后面再讨论。比如最简单的卖买产品。要实现这个功能。那么需要有产品基础表、产品详细表、商店表、背包表。如果扩展性更强,相应的双表是少不不了的。表的问题都简单了。关键是这个物品有什么用。这样物品的来源,一大堆数据,物品的走向,又是一…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号