p6spy的简单使用

   P6Spy 是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架。通过 P6Spy 我们可以对 SQL 语句进行拦截,相当于一个 SQL 语句的记录器,这样我们可以用它来作相关的分析,比如性能分析。P6Spy 用 Log4J 来记录 JDBC 调用的日记信息。

使用步骤:

  首先,你的应用系统应当是基于数据库的,然后你需要去获取 P6Spy 相关的文件。下面介绍 P6Spy 的安装与使用的详细操作过程:

 1.下载p6spy框架,下载地址:http://sourceforge.net/projects/p6spy/

 2.把 P6Spy 的 jar 包 p6spy.jar 放到 CLASSPATH 中,如果是 Web 应用程序则放在 YourWebApp/WEB-INF/lib/ 目录下;

 3.把 spy.properties 放到 CLASSPATH 目录下,如果是 Web 应用程序放在 YourWebApp/WEB-INF/classess/ 目录下,注意不是lib/ 目录

 4.修改你应用系统中的数据库驱动名称为 P6Spy 的驱动程序名称 com.p6spy.engine.spy.P6SpyDriver 其它的全部使用默认值,暂时先都不用修改;

 5.打开配置文件 spy.properties 文件,找到 realdriver,把它的值改为你的应用系统的真正的数据库驱动名称,deregisterdrivers属性设置为true;

 6.运行你的应用程序或 Web 应用程序,可以在 spy.log 里看到 P6Spy 监测到的 SQL 详细的执行与操作的记录信息了,包含有完整的 SQL 执行参数。


p6Log与p6Outage

在 P6Spy 发布包中,它包含 P6Log 和 P6Outage 两个模块:

1.p6Log

  P6Log 是用来拦截和记录任务应用程序的 JDBC 语句的。这个功能对于开发者监控 EJB 服务器上的 SQL 语句执行情况尤其有用,可以让开发者完成尽可能高效的代码。同时 P6Spy 的部署是极其简单的,而且根本不需要更改任何一行代码,即对现有的应用是无侵入性的。

realdriver= (your driver)       (你的实际 JDBC 驱动程序名称)
executionthreshold=整数时间     (以毫秒为单位)

2.P6Outage

  P6Outage 专门用来检测和记录执行时间比较长的 SQL 语句,P6Outage 只记录超过配置条件里时间的那些信息,并对可能影响到数据库的运行效率减小到最低。

#outagedetection=true|false    (是否记录较长时间运行的语句)
#outagedetectioninterval=整数时间 (以秒为单位)
 
配置参数及相关意义:
 
 
配置项名称默认值配置项意义及相关注意事项
module.logcom.p6spy.engine.logging. P6LogFactory用来拦截和记录任务应用程序的 JDBC 语句。若无配置或注释掉则无此功能。
module.outagecom.p6spy.engine.outage. P6OutageFactory检测和记录执行时间比较长的 SQL 语句。若无配置或注释掉则无此功能。
realdriver 真正的应用系统使用的数据库驱动程序名称。
realdriver2 真正的应用系统使用的第二种备用数据库驱动程序名称。
realdriver3 真正的应用系统使用的第三种备用数据库驱动程序名称。
deregisterdriversfalse显示地把真正的数据库的驱动程序进行反注册掉。取值 true| false
executionthreshold P6Log 模块执行时间设置,整数值 (以毫秒为单位),只有当超过这个时间才进行记录 Log。
outagedetectionfalseP6Outage 模块是否记录较长时间运行的语句。取值 true| false
outagedetectioninterval P6Outage 模块执行时间设置,整数值 (以秒为单位)),只有当超过这个时间才进行记录 Log。
filterfalse是否过滤 Log,取值 true| false
include 过滤 Log 时所包含的表名列表,以逗号分隔。
exclude 过滤 Log 时所排除的表名列表,以逗号分隔。
sqlexpression 过滤 Log 时的 SQL 表达式名称
autoflushtrue是否自动刷新。取值 true| false
dateformat 设置时间的格式,也就是用 Java 的 SimpleDateFormat 程序。
includecategories 显示指定过滤 Log 时包含的分类列表,取值为 error,info,batch,debug,statement,commit,rollback,result 的各种组合。
excludecategories 显示指定过滤 Log 时排队的分类列表,取值同上。
stringmatcher 使用正则表达式来过滤 Log,取值为 com.p6spy.engine.common.GnuRegexMatcher 和 com.p6spy.engine.common.JakartaRegexMatcher
stacktracefalse打印堆栈跟踪信息。取值 true| false
stacktraceclass 如果 stacktrace=true,则可以指定具体的类名来进行过滤。
reloadpropertiesfalse监测属性配置文件是否进行重新加载。取值 true| false
reloadpropertiesinterval60属性配置文件重新加载的时间间隔,以秒为单位。
useprefixfalse是否加上前缀,设置为 true,会加上 p6spy: 作为前缀。取值 true| false
appendercom.p6spy.engine.logging. appender.FileLogger指定 Log 的 appender,与 Log4J 有点同义,取值:com.p6spy.engine.logging.appender.Log4jLogger、com.p6spy.engine.logging.appender.StdoutLogger 和 com.p6spy.engine.logging.appender.FileLogger
logfilespy.log指定 Log 的文件名,任何适于操作系统的文件。
appendtrue指定是否每次是增加 Log,设置为 false 则每次都会先进行清空。取值 true| false
log4j.appender.STDOUTorg.apache.log4j.ConsoleAppender当 appender 为 log4j 时采用的配置,配置如同 Log4J 的相关配置。
log4j.appender.STDOUT.layoutorg.apache.log4j.PatternLayout同上
log4j.appender.STDOUT. layout.ConversionPatternp6spy - %m%n同上
log4j.logger.p6spyINFO,STDOUTLog 级别的设置,取值同 Log4J 的配置
realdatasource 设置数据源 DataSource 的配置名称。
realdatasourceclass 设置数据源 DataSource 的类的全称。
realdatasourceproperties 设置数据源 DataSource 的属性,以分号分隔。
jndicontextfactory 设置 JNDI 数据源的 NamingContextFactory。
jndicontextproviderurl 设置 JNDI 数据源的提供者的 URL。
jndicontextcustom 设置 JNDI 数据源的一些定制信息,以分号分隔。

测试代码:http://download.csdn.net/detail/zyf814/5429559



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值