from:http://blog.chinaunix.net/u1/55983/showart_2209273.html
p6spy 组件,它可以拦截所有执行的 SQL 语句,而不管你使用的是什么 ORM 框架。对于 PrepareStatement 那样带参数(?) 的语句,它会帮你代上相应的参数值。
p6spy 的主页是http://sourceforge.net/projects/p6spy/,它支持当前流行的应用服务器,如 JBoss、Orion、Tomcat、WebLogic、WebSphere 等,将spy.properties和p6spy.jar,拷贝到classes根目录和lib目录就可以了,其实不用太在意 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 简介** P6Spy 是一个开源的数据库监控工具,它能够记录并分析应用程序与数据库之间的所有SQL交互。对于开发者而言,P6Spy 是一个强大的调试和性能分析工具,尤其在使用MyBatis或Hibernate等ORM框架时,能够...
P6spy是一个JDBC Driver的包装工具,p6spy通过对JDBC Driver的封装以达到对SQL语句的监听和分析,以达到各种目的。 p6spy的安装步骤: 1. 下载p6spy的安装包 2. 把p6spy的jar包放到Classpath中,如果是WEB App...
**P6Spy与WebLogic配置及SQLProfiler监控详解** P6Spy是一款开源的数据库监控工具,主要用于记录和分析应用程序对数据库的所有SQL操作。在Java应用环境中,如WebLogic服务器上,P6Spy可以帮助开发者和DBA监控SQL...
**P6Spy简介** P6Spy是一款开源的Java数据库监控工具,它允许开发者在不修改应用程序代码的情况下,透明地监控数据库活动。P6Spy通过拦截并记录JDBC调用来获取数据库查询、更新和其他操作的详细信息,这对于性能...
**P6Spy SQL监控工具详解** P6Spy是一款开源的SQL监控工具,它主要用于Java应用程序中的数据库活动监控。P6Spy通过拦截并记录应用程序与数据库之间的SQL交互,为开发者和DBA提供了强大的诊断和性能分析能力。在进行...
P6Spy是一个广泛使用的开源框架,它允许开发者无侵入地监控和记录应用程序中的所有SQL语句。这个项目的目标是借鉴P6Spy的部分源码,创建一个自定义的SQL执行监控器,以满足特定的需求或提供更定制化的功能。 P6Spy...
P6Spy是一个强大的开源工具,专门用于监控JDBC连接,特别是在SpringBoot环境下,它可以提供对Oracle数据库查询执行时长的详细分析。P6Spy的工作原理是通过代理模式,拦截SQL语句并记录其执行情况,这有助于开发者...
【P6Spy简介】 P6Spy 是一个开源的 Java 监控工具,专门用于 SQL 查询的拦截和日志记录。它适用于那些希望监控数据库访问,分析性能,或者在不修改应用程序代码的情况下对 SQL 语句进行调试的开发人员。P6Spy 不仅...
P6Spy 是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架。通过 P6Spy 我们可以对 SQL 语句进行拦截,相当于一个 SQL 语句的记录器,这样我们可以用它来作相关的分析,比如性能分析。P6Spy 用 Log4J 来...
在这种情况下,P6Spy是一个非常有用的工具。P6Spy是一个开源的JDBC代理库,它允许我们监控并记录应用通过JDBC执行的所有数据库操作,包括那些由Hibernate生成的SQL语句。它不仅可以提供完整的SQL语句,还能够提供...
《P6Spy 3.7.0:数据库监控与性能优化利器》 P6Spy 是一个开源的数据库监视工具,它允许开发者在不修改应用程序代码的情况下,对数据库访问进行监听、记录和分析。P6Spy 的3.7.0版本为开发者提供了更强大的功能和...
【标题】"p6spy 修改版,去掉resultset" 是一个针对P6Spy数据库监控工具的定制化版本,主要特点是去除了对`ResultSet`的监控功能。P6Spy是一款广泛使用的开源工具,它允许开发者在不修改应用程序代码的情况下,监控...
`SQL Profiler`和`P6Spy`就是两个用于此目的的工具。它们可以帮助开发者识别性能瓶颈,理解数据库操作的效率,并进行必要的优化。现在我们来详细探讨这两个工具的配置及其相关知识。 首先,`SQL Profiler`是微软SQL...
在介绍如何在MyEclipse中配置P6Spy以及导入其源码之前,首先需要了解P6Spy是一款什么工具。P6Spy是一个开源的应用程序,它允许开发者在Java应用程序中监控和记录对数据库的SQL调用。这对于数据库查询的性能分析和...
1. **安装P6Spy**:首先,从P6Spy的官方网站下载最新版本的P6Spy库,并将其添加到项目的类路径中。这通常涉及到修改`pom.xml`文件(对于Maven项目)或`build.gradle`文件(对于Gradle项目)。 2. **配置P6Spy**:在...
【p6spy精简版-跟踪SQL工具】是一款专为数据库操作监控设计的工具,它通过对JDBC驱动的拦截,实现对SQL语句的透明跟踪。这个精简版旨在简化p6spy的原生配置和使用流程,让更多非开发人员也能便捷地利用此工具来监控...
**P6Spy 知识点详解** P6Spy 是一个开源的 Java 库,它专为监控和分析数据库应用的 SQL 活动而设计。它通过代理 JDBC 驱动,使得在不修改应用程序代码的情况下,能够捕获并记录执行的所有 SQL 语句。这对于性能调试...
**P6Spy** 是一个开源的Java库,用于监控和日志记录应用程序与数据库之间的所有交互。它通过拦截和包裹JDBC驱动程序来实现这一功能,使得开发人员和DBA可以详细跟踪SQL查询,这对于性能优化、问题排查以及理解应用...
P6Spy是一款强大的开源数据库监控工具,主要用于Java应用程序中的数据库活动监控。它可以在不修改代码的情况下,记录并分析SQL语句,提供详细的执行性能信息,这对于优化数据库操作、排查问题和提升应用程序性能非常...
P6Spy则是一个开源的数据库监控工具,它能够帮助开发者和管理员追踪和分析SQL执行情况,提高数据库性能。SQL Profiler是P6Spy的一个组件,用于对数据库操作进行详细分析,找出潜在的性能瓶颈。 配置WebLogic Server...