p6spy简介_p6教程

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

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

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

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

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

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

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

(0)


相关推荐

  • JEECG第二期深入使用培训(报名截止2014-06-21)[通俗易懂]

    JEECG第二期深入使用培训(报名截止2014-06-21)

  • 女生学java_女生到底适不适合学Java-Fun言

    女生学java_女生到底适不适合学Java-Fun言随着女性越来越独立,我们可以看到再以前我们认为不适合女性朋友从事的工作,也出现了越来越多的女生,例如对IT行业也不再跟之前一样畏惧。虽然当下很多人所持的观点依旧是,女生不适合IT行业,但是很多女生已经在IT行业中崭露头角,成为IT行业中的中坚力量。越来越多的女生有志于从事IT行业,很多女生选择学Java,那么女生学习Java到底有没有优势呢?怎么说呢,女生学习Java有时候比男生更占优势!具体表现…

  • 人际关系处理技巧

    人际关系处理技巧

  • apk逆向激活成功教程入门级[通俗易懂]

    apk逆向激活成功教程入门级[通俗易懂]样本很简单,就只有个发短信的行为,内容加密,可以直接写解密方法解密,但是这里我想通过hook解密方法直接动态看解密内容。动态跑发现并没有运行到解密方法那里,查看代码发现解密前有个if没通过:试着反编译修改代码找到对应的smali代码删除掉重新编译生成apk搞定。新生成的apk成功删除掉了if判断那块代码最后hook解密方法动态看到解密内容附上样本:链接:https://p…

  • linux卸载软件包命令rpm_为linux卸载一个软件包应使用

    linux卸载软件包命令rpm_为linux卸载一个软件包应使用例如卸载mysql:这样就完成了rpm安装程序的卸载。

  • wolive在线客服系统_源码屋

    wolive在线客服系统_源码屋wolive是一款为数不多的可自行搭建的php客服系统源码,基于开源高性能workerman框架开发,看了下,功能比较全。想到基于workerman开发,并发性能应该不错。找遍其它客服系统,发现都没有给源码,程序及聊天数据也全部存储在别人服务器上,由于业务涉及到一些账号、订单、买家信息等隐私,担心数据安全问题,所以找到了wolive。由于wolive可以私有化部署,数据库、程序都在自己服务器上,…

发表回复

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

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