Springboot + P6spy 自定义控制台Sql打印

目录

一、添加依赖

二、修改application.yml配置文件

三、新建 P6SpyLogger.java,处理打印的SQL语句

四、resources 下 新增spy.properties文件

五、关闭mybatis-plus控制台打印

六、日志打印


一、添加依赖

 <!-- P6spy -->
 <dependency>
    <groupId>com.github.gavlyukovskiy</groupId>
    <artifactId>p6spy-spring-boot-starter</artifactId>
    <version>1.9.0</version>
 </dependency>

 <!-- 格式化sql,美化sql -->
<dependency>
    <groupId>com.github.vertical-blank</groupId>
    <artifactId>sql-formatter</artifactId>
    <version>2.0.4</version>
</dependency>

二、修改 application.yml 配置文件

只需要将 driverClassNameurl 进行修改

spring:
  datasource:
    driverClassName: com.p6spy.engine.spy.P6SpyDriver
    url: jdbc:p6spy:mysql://localhost:3306/XXX?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8

三、新建 P6SpyLogger.java,处理打印的SQL语句

import com.github.vertical_blank.sqlformatter.SqlFormatter;
import com.p6spy.engine.spy.appender.MessageFormattingStrategy;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author :swn
 * @date : 2023/11/9
 */
public class P6SpyLogger implements MessageFormattingStrategy {

    private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    /**
     * 自定义sql日志打印
     *
     * @param connectionId 连接标识
     * @param now          执行时间
     * @param elapsed      执行秒数ms
     * @param category     statement
     * @param prepared     准备sql语句
     * @param sql          sql语句
     * @param s4           数据库url连接
     * @return {@link String}
     */
    @Override
    public String formatMessage(int connectionId, String now, long elapsed, String category, String prepared, String sql, String s4) {
        if (!sql.trim().isEmpty()) {
            String sqlBegin = "============== SQL LOGGER BEGIN ==============";

            String sqlExecuteTime = "SQL 执行时间:" + this.format.format(new Date()) + "\n";
            String elapsedStr = "SQL 执行毫秒:" + elapsed + "ms" + "\n";
            String sqlPrint = "SQL 执行语句:" + "\r\n" + SqlFormatter.format(sql);
            String sqlEnd = "==============  SQL LOGGER END  ==============";

            return "\r\n" + sqlBegin + "\r\n" + sqlExecuteTime + elapsedStr + sqlPrint + "\r\n" + sqlEnd;
        }
        return "";
    }
}

四、resources下新增 spy.properties 文件

logMessageFormat=com.xxx.xxx.P6SpyLogger 注意修改成自己的包路径

#3.2.1以上使用
modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory
#3.2.1以下使用或者不配置
#modulelist=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory
# 自定义日志打印
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
#日志输出到控制台
appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
# 使用日志系统记录 sql
#appender=com.p6spy.engine.spy.appender.Slf4JLogger
# 设置 p6spy driver 代理
deregisterdrivers=true

# 取消JDBC URL前缀
useprefix=true
# 配置记录 Log 例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
excludecategories=info,debug,result,commit,resultset
# 日期格式
dateformat=yyyy-MM-dd HH:mm:ss
# 实际驱动可多个
#driverlist=org.h2.Driver
# 是否开启慢SQL记录
outagedetection=true
# 慢SQL记录标准 2 秒
outagedetectioninterval=10


# 自定义SQL打印处理类
logMessageFormat=com.xxx.xxx.P6SpyLogger

五、关闭 mybatis-plus 控制台打印

mybatis-plus:
  configuration:
    # 关闭控制台打印日志
    log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl

六、日志打印

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值