`
huzhenyu
  • 浏览: 184689 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论
阅读更多
from:http://blog.chinaunix.net/u1/55983/showart_2209273.html
p6spy 组件,它可以拦截所有执行的 SQL 语句,而不管你使用的是什么 ORM 框架。对于 PrepareStatement 那样带参数(?) 的语句,它会帮你代上相应的参数值。

  p6spy 的主页是 http://www.p6spy.com,它支持当前流行的应用服务器,如 JBoss、Orion、Tomcat、WebLogic、WebSphere 等,在 http://www.p6spy.com/documentation/install.htm#install 介绍了 p6spy 的安装。其实不用太在意 p6spy 的安装说明,关键是要了解了某个应用服务器本身,要搞清楚的一个问题是“谁在加载 p6spy 包,从哪里加载”,那么配置 p6spy 就不成问题了,你甚至可以把 p6spy 用在独立的 Java 应用程序中。

  p6spy 可以输出日志到文件中、控制台、或者传递给 Log4j,而且还能配搭 SQL Profiler 或 IronTrackSQL 图形化监控 SQL 语句,监测到哪些语句的执行是耗时的,逐个优化。关于与 SQL Profiler 或 IronTrackSQL 的配合使用可参数文件的链接。



如果在你的应用程序启动后,却在 spy.log 文件中发现了如下的提示信息,那就是驱动程序加载先后的问题了。

<你的程序的数据库驱动名称> is a real driver in spy.properties, but it has been loaded before p6spy. p6spy will not wrap these connections. Either prevent the driver from loading, or try setting'deregisterdrivers' to true in spy.properties



请把 spy.properties 配置文件里的

deregisterdrivers=false

改为

deregisterdrivers=true

,重新运行即可。

这是因为有些应用系统中会先于 P6Spy 加载了真正的数据库的驱动程序,导致 P6Spy 无法监控到,设置

deregisterdrivers



true

,是显式地把真正的数据库的驱动程序进行反注册掉,而采用 P6Spy 的驱动程序。



下表列出了 spy.properties 配置文件中的各配置项的名称、默认值及其意义和相关注意事项:
配置项名称 默认值 配置项意义及相关注意事项
module.log com.p6spy.engine.logging. P6LogFactory 用来拦截和记录任务应用程序的 JDBC 语句。若无配置或注释掉则无此功能。
module.outage com.p6spy.engine.outage. P6OutageFactory 检测和记录执行时间比较长的 SQL 语句。若无配置或注释掉则无此功能。
realdriver   真正的应用系统使用的数据库驱动程序名称。
realdriver2   真正的应用系统使用的第二种备用数据库驱动程序名称。
realdriver3   真正的应用系统使用的第三种备用数据库驱动程序名称。
deregisterdrivers false 显示地把真正的数据库的驱动程序进行反注册掉。取值 true| false
executionthreshold   P6Log 模块执行时间设置,整数值 (以毫秒为单位),只有当超过这个时间才进行记录 Log。
outagedetection false P6Outage 模块是否记录较长时间运行的语句。取值 true| false
outagedetectioninterval   P6Outage 模块执行时间设置,整数值 (以秒为单位)),只有当超过这个时间才进行记录 Log。
filter false 是否过滤 Log,取值 true| false
include   过滤 Log 时所包含的表名列表,以逗号分隔。
exclude   过滤 Log 时所排除的表名列表,以逗号分隔。
sqlexpression   过滤 Log 时的 SQL 表达式名称
autoflush true 是否自动刷新。取值 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
stacktrace false 打印堆栈跟踪信息。取值 true| false
stacktraceclass   如果 stacktrace=true,则可以指定具体的类名来进行过滤。
reloadproperties false 监测属性配置文件是否进行重新加载。取值 true| false
reloadpropertiesinterval 60 属性配置文件重新加载的时间间隔,以秒为单位。
useprefix false 是否加上前缀,设置为 true,会加上 p6spy: 作为前缀。取值 true| false
appender com.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
logfile spy.log 指定 Log 的文件名,任何适于操作系统的文件。
append true 指定是否每次是增加 Log,设置为 false 则每次都会先进行清空。取值 true| false
log4j.appender.STDOUT org.apache.log4j.ConsoleAppender 当 appender 为 log4j 时采用的配置,配置如同 Log4J 的相关配置。
log4j.appender.STDOUT.layout org.apache.log4j.PatternLayout 同上
log4j.appender.STDOUT. layout.ConversionPattern p6spy - %m%n 同上
log4j.logger.p6spy INFO,STDOUT Log 级别的设置,取值同 Log4J 的配置
realdatasource   设置数据源 DataSource 的配置名称。
realdatasourceclass   设置数据源 DataSource 的类的全称。
realdatasourceproperties   设置数据源 DataSource 的属性,以分号分隔。
jndicontextfactory   设置 JNDI 数据源的 NamingContextFactory。
jndicontextproviderurl   设置 JNDI 数据源的提供者的 URL。
jndicontextcustom   设置 JNDI 数据源的一些定制信息,以分号分隔。

1.在log4j配置文件里加上
log4j.logger.org.hibernate.type=DEBUG,CONSOLE
就可以看到被绑定的各个参数的值。

2.用 P6Spy。

3.用proxool。
配置org.logicalcobwebs.proxool.admin.servlet.AdminServlet
然后在web界面察看sql。
分享到:
评论

相关推荐

    P6SPY JDBC拦截打印sql语句 非常好的调试工具

    P6spy是一个JDBC Driver的包装工具,p6spy通过对JDBC Driver的封装以达到对SQL语句的监听和分析,以达到各种目的。 p6spy的安装步骤: 1. 下载p6spy的安装包 2. 把p6spy的jar包放到Classpath中,如果是WEB App...

    P6Spy 提供数据库性能监控和剖析工具

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

    p6spy.jar下载

    p6spy

    Spring使用p6spy监控sql

    p6spy.jar 博文链接:https://lxy19791111.iteye.com/blog/131293

    p6spy-sql监控

    p6spy-sql监控 p6spy-sql监控 p6spy-sql监控

    p6spy简介显示hibernate配置

    p6spy简介,p6spy完整显示hibernate的SQL语句 包括参数,spring p6spy 配置

    Spring 3.0+Struts2+Mybatis 3 + p6spy 平台框架

    这是自己整合的Spring 3.0+Struts2+Mybatis 3 + p6spy +ehcache的平台框架,内含一点示例代码,目前ehcache没有使用。直接编译后发布就能用 测试环境基于JDK1.6+Tomcat 6.0. 大家拿到后请根据实际情况修改 ...

    p6spy java 使用

    p6spy使用 sql跟踪 排除resultset 去掉问号

    p6spy使用说明.doc

    p6spy监控jdbc连接oracle查看执行时长,使用配置说明

    下载 p6spy.jar (内含使用步骤)

    p6spy 是对 mybatis、hibernate 的 SQl 监控,提高在开发过过程中效率。 本人直男癌一枚,希望我提供的 p6spy 的配置和使用对亲们有帮助,谢谢!

    sqlprofiler+p6spy+配制

    配置P6Spy和SQL Profiler

    P6Spy的使用.txt

    集成P6spy 一 系统集成P6spy

    p6spy去掉结果集版

    p6spy去掉结果集版 我的博客有相关的使用说明.

    p6spy工具类

    p6spy是一种可以在控制台上打印出sql语句的工具类,可以和多种数据库交互框架结合在一起,调试程序非常方便

    p6spy过滤resultset版

    p6spy支持jpa(如hibernate、ibatis/mybatis)打印完整sql。 此为本人在p6spy源码基础上进行修改,使其能在sql日志中过滤resultset,是sql更简洁,开发更方便。

    p6spy的maven工程源码

    p6spy用于监听SQL,配置简答,但是git上下载的是gradle版本,需要重新转maven方可运行,本版本是maven工程,导入即可使用。

    p6spy.jar(支持配置项:文件大小)

    p6spy.jar 重新修改文件大小逻辑使其生效

    采用p6spy完整显示hibernate的SQL语句

    虽然在hibernate中有show_sql选项,但是显示出来的语句大多类似 select * from xxx where value=? 但是有时候我们需要得到完整的SQL语句,怎么办呢?使用P6SPY就可以完成这个任务

    p6spy改造去掉resultset和添加每日归档

    附件中就是p6spy改造去掉resultset和添加每日归档的jar。 方法:打开eclipse,导入-eclipse,进行自己的修改(已改完) 将src复制到-src下面,运行ant命令即可在dist生成p6spy.jar文件 参照sp6.properties进行修改...

    p6spy精简版-跟踪sql工具

    对p6spy的使用做了些简化,其实主要目的有两个:1是为了学习p6spy的源码,2是简化使用方法,使一些非开发人员也能使用此工具监听sql,压缩包内附源码和说明文档

Global site tag (gtag.js) - Google Analytics