p6spy简介_p6教程

p6spy简介_p6教程在公司项目中运用了这项技术,一开始不清楚这是干啥用的,在网上查找资料有所一定的了解,但是应该不够全面,希望可以评论指出。p6spy是数据库动态监控的一种框架,它可以使得数据库数据无缝拦截和操作,而不必对现有应用程序的代码作任何修改。P6Spy分发包包括P6Log,它是一个可记录任何Java应用程序的所有JDBC事务的应用程序。其配置完成使用时,可以进行数据访问性能的监测。下面我们来看一下…


Jetbrains全系列IDE稳定放心使用

在公司项目中运用了这项技术,一开始不清楚这是干啥用的,在网上查找资料有所一定的了解,但是应该不够全面,希望可以评论指出。

 

p6spy是数据库动态监控的一种框架,它可以使得数据库数据无缝拦截和操作,而不必对现有应用程序的代码作任何修改。P6Spy分发包包括P6Log,它是一个可记录任何Java应用程序的所有JDBC事务的应用程序。其配置完成使用时,可以进行数据访问性能的监测。下面我们来看一下怎么在项目中使用P6Spy。

 

首先需要在项目中引入p6spy的依赖。

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

接下来我们需要在项目的classpath目录下增加spy.properties文件。具体配置内容如下:

module.log=com.p6spy.engine.logging.P6LogFactory
driverlist=com.mysql.jdbc.Driver
deregisterdrivers=true
outagedetection=false
filter=false
autoflush = true
excludecategories=info,debug,result,batch
append=true
appender=com.p6spy.engine.spy.appender.Slf4JLogger
log4j.logger.p6spy=INFO,STDOUT,F
#配置p6spy的日志不重复打印
log4j.additivity.p6spy=false
logMessageFormat=com.p6spy.engine.spy.appender.MultiLineFormat

接着我们需要做的是替换原来的数据库驱动。我的数据库用的是MySQL所以我这里做的修改是这样的(其他的数据库照样画葫芦)。
原来的数据库驱动:
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>

修改之后的驱动:

<property name="driverClassName" value="com.p6spy.engine.spy.P6SpyDriver"/>

原来的URL:

<property name="url" value="jdbc:mysql://localhost:3306/XXX?useUnicode=true&characterEncoding=UTF-8"></property>

修改之后的URL:

<property name="url"  value="jdbc:p6spy:mysql://localhost:3306/XXX?useUnicode=true&characterEncoding=UTF-8"></property>

 

 

log4j.properties的配置如下:

 

#Console Log
log4j.rootLogger=info, console, file
 
# Write to Console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=INFO
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%5p %d{MM-dd HH:mm:ss}(%F:%L): %m%n
 
#Write to File
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=D:/log/provider.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%5p %d{MM-dd HH:mm:ss}(%F:%L): %m%n

 

spy.properties的相关配置说明:

#MODULE p6spy提供了两种模块进行日志记录:log和outage,两者有不同的功能,配置参数也有专属,但是它们也共享一些配置参数,如哪些表被记录,日志文件名称和地址,是否显示sql执行轨迹等。 
#log用来拦截和记录任何使用jdbc的应用的数据库声明日志,默认为开启。  
#outage主要是用来最低化log所带来的性能问题,只记录超过一定时间的执行语句,默认为关闭。   
module.log=com.p6spy.engine.logging.P6LogFactory    
#module.outage=com.p6spy.engine.outage.P6OutageFactory  
#实际的数据库驱动,真正的数据库驱动  
realdriver=com.mysql.jdbc.Driver  
#实际的数据库驱动备份,当前面的数据库驱动不对时,顺序查找下一驱动,直到找到合适为止,默认为空。   
realdriver2=   
realdriver3=  
#无效化已注册的驱动,如果在其他地方已经定义好了真正的数据库驱动,那么p6spy driver就不会生效,也就不能起到作用,所以需#要把此选项置为true。    
deregisterdrivers=true  
#log模块专属的参数,当log模块开启时,如果执行语句超出这个时间(单位为毫秒),才能被记录在文件中,可以重新被载入,默认为0。    
executionthreshold=   
#outage专属的参数,当outage模块开启时,outagedetection为true时,会根据outagedetectioninterval(单位为秒)的大小, 间隔的去捕获执行语句,一般用来捕获长时间执行的语句。。    
outagedetection=false 
outagedetectioninterval=  
#以下参数是公共的属性,log和outage都可以公用的参数过滤器开关,是否根据参数过滤一些记录内容  
filter=false  
#当过滤器开启时,需要记录的表,默认为都记录    
include=  
#当过滤器开启时,不需要记录的表,默认为都记录    
exclude=  
#当过滤器开启时,根据sql表达式过滤    
sqlexpression =  
#是否自动刷新    
autoflush   = true  
#输出的日志文件的日期格式,也就是用Java的SimpleDateFormat程序。    
dateformat=  
#定义包含的日志级别,当日志级别属于此类型时,才能被记录,属性值有error, info, batch, debug, statement, commit, rollback 和result   
includecategories=  
#定义不包含的日志级别,当日志级别属于此类型时,不会被记录    
excludecategories=  
#使用正则表达式来过滤 Log,匹配时才会被记录,例如: #stringmatcher=com.p6spy.engine.common.GnuRegexMatcher #stringmatcher=com.p6spy.engine.common.JakartaRegexMatcher    
stringmatcher=  
#是否对每一SQL的执行语句进行打印堆栈跟踪信息,通常在进行长时间执行SQL的情况下打开进行监控。
stacktrace=false  
#当上一轨迹开关打开时,可以指定具体的类名来进行过滤。    
stacktraceclass =   
#监测属性配置文件是否进行重新加载,一般应用服务器在启动时进行加载一次就够了。    
reloadproperties=false  
#当是否重新加载开关打开时,定义重新加载时间周期。    
reloadpropertiesinterval = 60   
#是否加上前缀,设置为 true,会加上 p6spy: 作为前缀    
useprefix=false  
#指定 Log 的 appender,与 Log4J 有点同义,取值:com.p6spy.engine.logging.appender.Log4jLogger com.p6spy.engine.logging.appender.StdoutLogger com.p6spy.engine.logging.appender.FileLogger   
appender=com.p6spy.engine.logging.appender.FileLogger  
#指定记录的日志文件名称和地址,根目录在应用服务器的发布端.如tomcat在%TOMCAT_HOME%/bin目录下。    
logfile = log/spy11.log  
#文件续载标识,在log的appender类型为FileLogger时,才生效,如果为true,则在生成的日志文件后面继续进行记录,否则删除之前的内容。    
append=true  
#类似与log4j的记录器的布局:
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender 
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout 
log4j.appender.STDOUT.layout.ConversionPattern=p6spy - #%m%n

在ibm developerWorks社区中有相关介绍:https://www.ibm.com/developerworks/cn/java/j-lo-p6spy/

转载于:https://www.cnblogs.com/eer123/p/9467848.html

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/188058.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 单片机应用基础知识_51单片机基础知识总结

    单片机应用基础知识_51单片机基础知识总结单片机——硬件基础知识宗旨:技术的学习是有限的,分享的精神是无限的。1、单片机内部资源STC89C52:8KFLASH、512字节RAM、32个IO口、3个定时器、1个UART、8个中断源(1)Flash(硬盘)——程序存储空间——擦写10万次,断电数据不丢失,读写速度慢(2)RAM(内存)——数据存储空间——断电数据丢失

    2022年9月7日
  • ExtJS入门教程03,form中怎能没有validation[通俗易懂]

    ExtJS入门教程03,form中怎能没有validation[通俗易懂]接上篇内容,我们在学会extjsform的基本用法之后,今天我们来看看extjsform的validation功能。必填项,就是不能为空(allowBlank)效果:代码:{xtype:”textfield”,name:”UserName”,fieldLabel:”用户名”,allowBlank:false,…

    2022年10月31日
  • vuex里mapState,mapGetters使用详解

    vuex里mapState,mapGetters使用详解这次给大家带来vuex里mapState,mapGetters使用详解,vuex里mapState,mapGetters使用的注意事项有哪些,下面就是实战案例,一起来看一下。一、介绍vuex里面的四大金刚:State,Mutations,Actions,Getters(上次记得关于vuex笔记http://www.jb51.net/article/138229.htm,是一个简…

    2022年5月6日
  • SpringBoot声明式事务的简单运用

    SpringBoot声明式事务的简单运用关于事物的基本概念等这里就不介绍了。Spring声明式事物的实现,有两种方式;第一种是配置xml,第二种是使用相关注解(这两种方式可详见《程序员成长笔记(一)》的相关章节)。SpringBoot中默认配置了第二种方式,所以,SpringBoot直接使用注解即可。下面介绍SpringBoot通过注解开启事物的使用。SpringBoot使用事物的步骤:第一步:在启动类上开启…

    2022年5月30日
  • JAVA设计模式之门面模式(外观模式)[通俗易懂]

    医院的例子  现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其“分而治之”,把一个系统划分为几个较小的子系统。如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情。  首先病人必须先挂号,然后门诊。如果医生要求化验,病人必

    2022年3月11日
  • 笔记本windows10连接wifi显示无internet_win10连接wifi显示无internet

    笔记本windows10连接wifi显示无internet_win10连接wifi显示无internetwin10笔记本连上WiFi,显示“无internet,安全”,本文提供了6种解决办法

    2022年8月1日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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