pom.xml

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

application.yml修改mysql数据库连接

spring:datasource:driver-class-name: com.p6spy.engine.spy.P6SpyDrivertype: com.zaxxer.hikari.HikariDataSourceurl: jdbc:p6spy:mysql://xxxx:3306/jw_user?useUnicode=true&characterEncoding=utf-8username: xxxxpassword: xxxx

spy.properties

这里需要注意的是2个文件的路径需要修改(文件代码在下面)

appender=com.example.mybatis_3_5.p6spy.P6spyLogger
logMessageFormat=com.example.mybatis_3_5.p6spy.P6spyLogFormat
 
#################################################################
# P6Spy Options File                                            #
# See documentation for detailed instructions                   #
# http://p6spy.github.io/p6spy/2.0/configandusage.html          #
##################################################################################################################################
# MODULES                                                       #
#                                                               #
# Module list adapts the modular functionality of P6Spy.        #
# Only modules listed are active.                               #
# (default is com.p6spy.engine.logging.P6LogFactory and         #
# com.p6spy.engine.spy.P6SpyFactory)                            #
# Please note that the core module (P6SpyFactory) can't be      #
# deactivated.                                                  #
# Unlike the other properties, activation of the changes on     #
# this one requires reload.                                     #
#################################################################
#modulelist=com.p6spy.engine.spy.P6SpyFactory,com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory################################################################
# CORE (P6SPY) PROPERTIES                                      #
################################################################# A comma separated list of JDBC drivers to load and register.
# (default is empty)
#
# Note: This is normally only needed when using P6Spy in an
# application server environment with a JNDI data source or when
# using a JDBC driver that does not implement the JDBC 4.0 API
# (specifically automatic registration).
driverlist=com.mysql.jdbc.Driver
# for flushing per statement
# (default is false)
#autoflush = false# sets the date format using Java's SimpleDateFormat routine.
# In case property is not set, miliseconds since 1.1.1970 (unix time) is used (default is empty)
dateformat=yyyy-MM-dd HH:mm:ss# prints a stack trace for every statement logged
#stacktrace=false
# if stacktrace=true, specifies the stack trace to print
#stacktraceclass=# determines if property file should be reloaded
# Please note: reload means forgetting all the previously set
# settings (even those set during runtime - via JMX)
# and starting with the clean table
# (default is false)
#reloadproperties=false# determines how often should be reloaded in seconds
# (default is 60)
#reloadpropertiesinterval=60# specifies the appender to use for logging
# Please note: reload means forgetting all the previously set
# settings (even those set during runtime - via JMX)
# and starting with the clean table
# (only the properties read from the configuration file)
# (default is com.p6spy.engine.spy.appender.FileLogger)
#appender=com.p6spy.engine.spy.appender.Slf4JLogger
#appender=com.p6spy.engine.spy.appender.StdoutLogger
#appender=com.p6spy.engine.spy.appender.FileLogger
#自定义的SQL格式化输出
appender=com.example.mybatis_3_5.p6spy.P6spyLogger# name of logfile to use, note Windows users should make sure to use forward slashes in their pathname (e:/test/spy.log)
# (used for com.p6spy.engine.spy.appender.FileLogger only)
# (default is spy.log)
#logfile = spy.log# append to the p6spy log file. if this is set to false the
# log file is truncated every time. (file logger only)
# (default is true)
#append=true# class to use for formatting log messages (default is: com.p6spy.engine.spy.appender.SingleLineFormat)
logMessageFormat=com.example.mybatis_3_5.p6spy.P6spyLogFormat
#logMessageFormat=com.p6spy.engine.spy.appender.MultiLineFormat# format that is used for logging of the date/time/... (has to be compatible with java.text.SimpleDateFormat)
# (default is dd-MMM-yy)
databaseDialectDateFormat=yyyy-MM-dd HH:mm:ss# whether to expose options via JMX or not
# (default is true)
#jmx=true# if exposing options via jmx (see option: jmx), what should be the prefix used?
# jmx naming pattern constructed is: com.p6spy(.<jmxPrefix>)?:name=<optionsClassName>
# please note, if there is already such a name in use it would be unregistered first (the last registered wins)
# (default is none)
#jmxPrefix=# if set to true, the execution time will be measured in nanoseconds as opposed to milliseconds
# (default is false)
#useNanoTime=false#################################################################
# DataSource replacement                                        #
#                                                               #
# Replace the real DataSource class in your application server  #
# configuration with the name com.p6spy.engine.spy.P6DataSource #
# (that provides also connection pooling and xa support).       #
# then add the JNDI name and class name of the real             #
# DataSource here                                               #
#                                                               #
# Values set in this item cannot be reloaded using the          #
# reloadproperties variable. Once it is loaded, it remains      #
# in memory until the application is restarted.                 #
#                                                               #
#################################################################
#realdatasource=/RealMySqlDS
#realdatasourceclass=com.mysql.jdbc.jdbc2.optional.MysqlDataSource#################################################################
# DataSource properties                                         #
#                                                               #
# If you are using the DataSource support to intercept calls    #
# to a DataSource that requires properties for proper setup,    #
# define those properties here. Use name value pairs, separate  #
# the name and value with a semicolon, and separate the         #
# pairs with commas.                                            #
#                                                               #
# The example shown here is for mysql                           #
#                                                               #
#################################################################
#realdatasourceproperties=port;3306,serverName;myhost,databaseName;jbossdb,foo;bar#################################################################
# JNDI DataSource lookup                                        #
#                                                               #
# If you are using the DataSource support outside of an app     #
# server, you will probably need to define the JNDI Context     #
# environment.                                                  #
#                                                               #
# If the P6Spy code will be executing inside an app server then #
# do not use these properties, and the DataSource lookup will   #
# use the naming context defined by the app server.             #
#                                                               #
# The two standard elements of the naming environment are       #
# jndicontextfactory and jndicontextproviderurl. If you need    #
# additional elements, use the jndicontextcustom property.      #
# You can define multiple properties in jndicontextcustom,      #
# in name value pairs. Separate the name and value with a       #
# semicolon, and separate the pairs with commas.                #
#                                                               #
# The example shown here is for a standalone program running on #
# a machine that is also running JBoss, so the JDNI context     #
# is configured for JBoss (3.0.4).                              #
#                                                               #
# (by default all these are empty)                              #
#################################################################
#jndicontextfactory=org.jnp.interfaces.NamingContextFactory
#jndicontextproviderurl=localhost:1099
#jndicontextcustom=java.naming.factory.url.pkgs;org.jboss.nameing:org.jnp.interfaces#jndicontextfactory=com.ibm.websphere.naming.WsnInitialContextFactory
#jndicontextproviderurl=iiop://localhost:900################################################################
# P6 LOGGING SPECIFIC PROPERTIES                               #
################################################################# filter what is logged
# please note this is a precondition for usage of: include/exclude/sqlexpression
# (default is false)
#filter=false# comma separated list of strings to include
# please note that special characters escaping (used in java) has to be done for the provided regular expression
# (default is empty)
#include =
# comma separated list of strings to exclude
# (default is empty)
#exclude =# sql expression to evaluate if using regex
# please note that special characters escaping (used in java) has to be done for the provided regular expression
# (default is empty)
#sqlexpression =#list of categories to exclude: error, info, batch, debug, statement,
#commit, rollback and result are valid values
# (default is info,debug,result,resultset,batch)
#excludecategories=info,debug,result,resultset,batch# Execution threshold applies to the standard logging of P6Spy.
# While the standard logging logs out every statement
# regardless of its execution time, this feature puts a time
# condition on that logging. Only statements that have taken
# longer than the time specified (in milliseconds) will be
# logged. This way it is possible to see only statements that
# have exceeded some high water mark.
# This time is reloadable.
#
# executionThreshold=integer time (milliseconds)
# (default is 0)
#executionThreshold=################################################################
# P6 OUTAGE SPECIFIC PROPERTIES                                #
################################################################
# Outage Detection
#
# This feature detects long-running statements that may be indicative of
# a database outage problem. If this feature is turned on, it will log any
# statement that surpasses the configurable time boundary during its execution.
# When this feature is enabled, no other statements are logged except the long
# running statements. The interval property is the boundary time set in seconds.
# For example, if this is set to 2, then any statement requiring at least 2
# seconds will be logged. Note that the same statement will continue to be logged
# for as long as it executes. So if the interval is set to 2, and the query takes
# 11 seconds, it will be logged 5 times (at the 2, 4, 6, 8, 10 second intervals).
#
# outagedetection=true|false
# outagedetectioninterval=integer time (seconds)
#
# (default is false)
#outagedetection=false
# (default is 60)
#outagedetectioninterval=30

P6spyLogFormat.java

package com.example.mybatis_3_5.p6spy;import com.p6spy.engine.spy.appender.MessageFormattingStrategy;
import org.springframework.util.StringUtils;/*** <p>* P6spy SQL 日志格式化* </p>** @author tzq* @date 2019-08-08 9:50*/
public class P6spyLogFormat implements MessageFormattingStrategy {@Overridepublic String formatMessage(final int connectionId, final String now, final long elapsed, final String category, final String prepared, final String sql, final String url) {return !StringUtils.isEmpty(sql) ? "Execute SQL:" + sql.replaceAll("[\\s]+", " ") : null;}
}

P6spyLogger.java

package com.example.mybatis_3_5.p6spy;import com.p6spy.engine.logging.Category;
import com.p6spy.engine.spy.appender.FormattedLogger;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;/*** <p>* P6spy日志实现* </p>** @author tzq* @date 2019-08-08 9:54*/
@Slf4j
public class P6spyLogger extends FormattedLogger {@Overridepublic void logException(Exception e) {log.info("", e);}@Overridepublic void logText(String text) {log.info(text);}@Overridepublic void logSQL(int connectionId, String now, long elapsed, Category category, String prepared, String sql, String url) {final String msg = strategy.formatMessage(connectionId, now, elapsed,category.toString(), prepared, sql, url);if (StringUtils.isEmpty(msg)) {return;}if (Category.ERROR.equals(category)) {log.error(msg);} else if (Category.WARN.equals(category)) {log.warn(msg);} else if (Category.DEBUG.equals(category)) {log.debug(msg);} else {log.info(msg);}}@Overridepublic boolean isCategoryEnabled(Category category) {if (Category.ERROR.equals(category)) {return log.isErrorEnabled();} else if (Category.WARN.equals(category)) {return log.isWarnEnabled();} else if (Category.DEBUG.equals(category)) {return log.isDebugEnabled();} else {return log.isInfoEnabled();}}
}

转载于:https://www.cnblogs.com/mytzq/p/11327033.html

springboot 集成p6spy相关推荐

  1. Windows下安装Mongodb SpringBoot集成MongoDB和Redis多数据源

    全文内容: Mongodb安装 说明:Mongodb和redis是开发中常用的中间件,Redis的安装使用比较简单就不写了,只说本地也就是Windows安装Mongodb. SpringBoot集成M ...

  2. SpringBoot集成FreeMarker

    给大家简单介绍一下springboot 集成FreeMarker 过程很简单,5分钟即可. 首先在项目中增添依赖spring-boot-starter-freemarker pom文件代码如下: &l ...

  3. springboot集成swagger2测试接口

    springboot集成swagger2测试接口 1.需要的依赖 2.开始编写一个swagger2 3.演示效果图片 1.需要的依赖 <dependency><groupId> ...

  4. springboot 集成logback

    springboot 集成logback 1.application.properties配置文件指定logback.xml logging.config=classpath:logback.xml ...

  5. springboot集成swagger2多模块中文配置详细步骤,解决集成mybatis或mybatis-plus无法正常使用问题

    springboot集成swagger2多模块中文配置详细步骤,解决集成mybatis或mybatis-plus无法正常使用问题 参考文章: (1)springboot集成swagger2多模块中文配 ...

  6. SpringBoot集成Quartz(解决@Autowired空指针Null问题即依赖注入的属性为null)

    SpringBoot集成Quartz(解决@Autowired空指针Null问题即依赖注入的属性为null) 参考文章: (1)SpringBoot集成Quartz(解决@Autowired空指针Nu ...

  7. SpringBoot集成全局异常处理

    2019独角兽企业重金招聘Python工程师标准>>> SpringBoot集成全局异常处理 前言 对于通常的MVC项目,大量的异常需要我们去处理,如此一来,我们的 Controll ...

  8. dubbo web工程示例_dubbo实战之二:与SpringBoot集成

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类和汇总,及配套源码,涉及Java.Docker.Kubernetes.DevO ...

  9. php 配置文件加密工具类,SpringBoot集成Jasypt安全框架以及配置文件内容加密(代码示例)...

    本篇文章给大家带来的内容是关于SpringBoot集成Jasypt安全框架以及配置文件内容加密(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 我们在SpringBoot项 ...

最新文章

  1. xml 和android脚本之家,Android利用Document实现xml读取和写入操作
  2. 深入浅出Android系统启动流程
  3. Map-Reduce 思想在 ABAP 编程中的一个实际应用案例
  4. MyBastis 三种批量插入方式的性能比较
  5. 算法 --- 判断某个值是否在二叉搜索树中
  6. React Native中pointerEvent属性
  7. P2114-[NOI2014]起床困难综合症【位运算】
  8. logback logback.xml 常用配置详解
  9. java拼图游戏Mian_Java拼图游戏源码 MainApp启动器 main(): 创建主界面类对 联合开发网 - pudn.com...
  10. RobotLegs框架解析
  11. 复旦新生计算机考试及格率,复旦大学本科新生《计算机办公自动化》课程入学考试考核大.doc...
  12. 服务器虚拟化的几种方式,服务器虚拟化究竟应当选择哪种方式?
  13. 从算法学起C语言--费氏数列
  14. Linux efi分区被删除了,恢复删掉的 MSR 和 EFI 分区
  15. PHP处理微信昵称特殊符号过滤方法
  16. 当代网瘾少年分析,以“2020年,我打了多少局王者荣耀”为例
  17. 植物大战僵尸修改向日葵无限吐阳光详细步骤~包含排除不符合条件的地址的讲解,以及如何观察地址情况等
  18. install pecl php_php – pecl install pecl_http没有提供任何版本
  19. Mac下将ISO写入U盘镜像
  20. 2021网易游戏雷火2021春招游戏功能测试工程师 笔试记录----春招补录

热门文章

  1. 基于虹软使用Java实现人脸识别、人脸比对、活性检测等
  2. 基于Android的医院挂号APP的设计与实现
  3. Python手动下载第三方库
  4. 基于AT89C52芯片的寻迹小车论文
  5. mysql数据库命令导入命令
  6. 计算机教室语音部,语音室简介
  7. ambiguous symbol
  8. ios13全选手势_ios13的三指手势操作怎么关闭 只要几步就行了
  9. 极限竞速地平线3json安装_极限竞速地平线3怎么安装到其他盘 极限竞速地平线3怎么自定义安装位置...
  10. 文件分割小精灵 v1.01 下载