`
IvanLi
  • 浏览: 602739 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

集成p6spy到spring中

阅读更多
网上好多帖子都是说,修改原有 JDBC Driver为:com.p6spy.engine.spy.P6SpyDriver
然后修改spy.properties 中的 realdriver值为原有的JDBC Driver
如果在spring开发环境中使用org.springframework.jdbc.datasource.DriverManagerDataSource来模拟dataSource是不会生效的,
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property  name="driverClassName">
		<value>com.sybase.jdbc2.jdbc.SybDriver</value>
		</property>
		<property  name="url">
		<value>jdbc:sybase:Tds:192.168.0.2:6100/db</value>
		</property>
		<property  name="username">
		<value>usr</value>
		</property>
		<property  name="password">
		<value>pwd</value>
		</property>
	</bean>

因为在spring加载时我们无法控制先加载哪个,spring会报错不能使用com.p6spy.engine.spy.P6SpyDriver连接到数据库,
其实p6spy只是想做jdbc的代理,而不是真正想连数据库,而spring却不知道这些,所以应该采用另外一种方式来集成p6spy
	<bean id="dataSourceTarget" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property  name="driverClassName">
		<value>com.sybase.jdbc2.jdbc.SybDriver</value>
		</property>
		<property  name="url">
		<value>jdbc:sybase:Tds:192.168.0.2:6100/db</value>
		</property>
		<property  name="username">
		<value>usr</value>
		</property>
		<property  name="password">
		<value>pwd</value>
		</property>
	</bean>
	<bean id="dataSource" class="com.p6spy.engine.spy.P6DataSource" 
                                  destroy-method="close">
        <constructor-arg>
            <ref local="dataSourceTarget"/>
        </constructor-arg>
   </bean>

这样就可以把p6spy集成到spring中去了。
令:网上好多文章都介绍使用sqlprofiler和p6spy配合,但是IronTrackSQL感觉更好一些!
关于如何使用sqlprofiler,IronTrackSQL,配置很简单
对于sqlprofiler只要把sqlprofiler自带的spy.properties放到classpath下就可以了,然后java -jar sqlprofiler.jar
对于IronTrackSQL,还要把irontracksql.jar也放到classpath下,然后java -jar irontracksql.jar
分享到:
评论
9 楼 hertz 2007-07-15  
我按照上面的方法做的,没有成功,提示——1 constructor arguments specified but no matching constructor found in bean 'dataSource',好像P6DataSource没有一个参数的构造函数阿
8 楼 spiritfrog 2007-06-01  
我用sqlprofiler的时候,想过滤掉category为resultset的信息,然后在spy.properties里面看到
excludecategories=info,debug,result,batch
应该是说category为resultset的信息已经被设置成exclude了,但是我现在还是能看到,为什么呢?因为我觉得这个信息似乎没有用。
7 楼 alexsunny 2007-05-31  
可以监控sql效率呀和hibernate显示的sql不同
6 楼 dingyuan 2007-05-30  
不知道这个东西有什么用。。本身hibernate就可以配置一下输入sql语句
5 楼 mingisme 2007-05-30  
我的配置:
<!--  P6Spy-->
	<bean id="dataSource" class="com.p6spy.engine.spy.P6DataSource">
		<constructor-arg>
			<bean
				class="org.springframework.jdbc.datasource.DriverManagerDataSource">
				<property name="driverClassName"
					value="com.p6spy.engine.spy.P6SpyDriver" />
				<property name="url" value="${jdbc.url}" />
				<property name="username" value="${jdbc.username}" />
				<property name="password" value="${jdbc.password}" />
			</bean>
		</constructor-arg>
	</bean>

realdriver=oracle.jdbc.driver.OracleDriver
logfile = c:/spy.log
appender=com.p6spy.engine.logging.appender.Log4jLogger

结果:
p6spy - 1180506863484|0|1|statement|/* load collection com.staplesnrc.plugins.security.domain.Resource.permissions */ select permission0_.RESC_ID as RESC2_0_, permission0_.PERMIS_ID as PERMIS1_0_ from TPERMIS_RESC permission0_ where permission0_.RESC_ID in (?, ?, ?, ?, ?)|/* load collection com.staplesnrc.plugins.security.domain.Resource.permissions */ select permission0_.RESC_ID as RESC2_0_, permission0_.PERMIS_ID as PERMIS1_0_ from TPERMIS_RESC permission0_ where permission0_.RESC_ID in (7, 142, 169, 161, 168)
p6spy - 1180506863484|-1||resultset|/* load collection com.staplesnrc.plugins.security.domain.Resource.permissions */ select permission0_.RESC_ID as RESC2_0_, permission0_.PERMIS_ID as PERMIS1_0_ from TPERMIS_RESC permission0_ where permission0_.RESC_ID in (7, 142, 169, 161, 168)|PERMIS1_0_ = 7, RESC2_0_ = 7
p6spy - 1180506863484|-1||resultset|/* load collection com.staplesnrc.plugins.security.domain.Resource.permissions */ select permission0_.RESC_ID as RESC2_0_, permission0_.PERMIS_ID as PERMIS1_0_ from TPERMIS_RESC permission0_ where permission0_.RESC_ID in (7, 142, 169, 161, 168)|PERMIS1_0_ = 48, RESC2_0_ = 161
p6spy - 1180506863484|-1||resultset|/* load collection com.staplesnrc.plugins.security.domain.Resource.permissions */ select permission0_.RESC_ID as RESC2_0_, permission0_.PERMIS_ID as PERMIS1_0_ from TPERMIS_RESC permission0_ where permission0_.RESC_ID in (7, 142, 169, 161, 168)|PERMIS1_0_ = 51, RESC2_0_ = 168
p6spy - 1180506863484|-1||resultset|/* load collection com.staplesnrc.plugins.security.domain.Resource.permissions */ select permission0_.RESC_ID as RESC2_0_, permission0_.PERMIS_ID as PERMIS1_0_ from TPERMIS_RESC permission0_ where permission0_.RESC_ID in (7, 142, 169, 161, 168)|PERMIS1_0_ = 51, RESC2_0_ = 169
4 楼 dzmonkey 2006-11-13  
我也没有试成功,请指教:

部分spy.properties
realdriver=oracle.jdbc.driver.OracleDriver 
appender=com.p6spy.engine.logging.appender.FileLogger
logfile = E:\spy.log
# append to the p6spy log file. if this is set to false the
# log file is truncated every time. (file logger only)
append=true

#The following are for log4j logging only
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=p6spy - %m%n
log4j.logger.p6spy=DEBUG,STDOUT

realdatasourceproperties=port;1521,serverName;192.168.0.23,databaseName;CSDRES,user;pass


spring的配置:
<bean id="dataSourceTarget" 
		class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName"><value>oracle.jdbc.OracleDriver</value></property>
		<property name="url">
			<value>
				jdbc:oracle:thin:@192.168.0.23:1521:CSDRES
			</value>
		</property>
		<property name="username"><value>user</value></property>
		<property name="password"><value>pass</value></property>
	</bean>
<bean id="dataSource" class="com.p6spy.engine.spy.P6DataSource"   destroy-method="close">  
       <constructor-arg>  
           <ref local="dataSourceTarget"/>  
       </constructor-arg>  
  </bean>  
3 楼 YuLimin 2006-10-20  
Ivan Li 写道
检查一下你的spy.property里logfile的配置路径是否正确,还有appender是否正确
P6Spy也可以配置成DataSource形式进行监控的。

P6Spy & SQL Profiler & IronTrack SQL的配置也可以参阅
http://www.iteye.com/topic/28880
2 楼 IvanLi 2006-10-20  
检查一下你的spy.property里logfile的配置路径是否正确,还有appender是否正确
1 楼 okokok 2006-10-20  
按你的方法做了,没看到log文件产生

相关推荐

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

    2. 把p6spy的jar包放到Classpath中,如果是WEB App放在WEB APP/WEB-INF/lib目录下 3. 把p6spy的Driver Class name替换原来的JDBC Driver Class Name, url, username, password一切都不变。  -- 由于每个应用的...

    p6spy工具包下载

    例如,教程可能会介绍如何在Spring Boot项目中集成P6Spy,以及如何解析生成的日志来优化SQL查询。 **四、最佳实践** 1. **合理设置日志级别**:根据需求调整日志级别,避免信息过多导致性能下降。 2. **定期分析...

    spring-boot-data-source-decorator:与p6spy,datasource-proxy,flexy-pool和spring-cloud-sleuth集成的Spring Boot

    用于分布式跟踪的库(如果在classpath中找到)可启用jdbc连接和查询跟踪(仅适用于p6spy或datasource-proxy) 为什么不将DataSource包装在配置中? 除了使用库之外,您还可以手动包装DataSource ,但是该库还提供了...

    spring boot搭建(二)

    在Spring Boot应用中,通过在数据源配置中插入P6Spy的代理驱动,我们可以获取到详细的SQL语句执行信息,包括执行时间、结果集大小等,这对于性能优化和问题排查非常有帮助。 现在,让我们来看一下文件列表中的`...

    spring boot搭建(三)word文档

    综上所述,在Spring Boot项目中集成Hibernate、Druid和p6spy可以帮助开发者更加高效地进行数据库操作,同时也能够更好地监控和调试应用程序。通过对这些技术的学习和掌握,可以大大提升开发效率和应用质量。

    spring boot mysql数据库操作

    在这个主题中,我们将深入探讨Spring Boot如何与MySQL数据库进行集成,以及如何进行CRUD(创建、读取、更新和删除)操作。 首先,集成MySQL数据库需要在`pom.xml`或`build.gradle`文件中添加相关依赖。对于Maven...

    SSH(springmvc+spring4.1+hibernate4.0)jar包整合

    2. **配置整合**:将Spring的核心配置、SpringMVC的配置和Hibernate的配置合并到一个或多个配置文件中。这包括数据源配置、SessionFactory配置、事务管理器配置等。 3. **AOP集成**:Spring的AOP可以用来实现事务...

    Spring Boot 2.3.12框架集成:全面配置与依赖版本管理

    值得注意的是,部分依赖如Druid数据库连接池和P6Spy SQL查询日志记录器的版本注释为“升级失败,下次再升”,表明这些依赖可能在尝试升级过程中遇到了问题,未来计划再次尝试升级。 此配置还包含了一些未升级的依赖...

    SpringMVC Mybatis P6psy Mongodb整合的项目

    同时,为了使P6spy能够监听到SQL语句,我们需要在JDBC连接字符串中加入P6spy的驱动,并配置相应的日志输出设置。对于MongoDB,我们需要配置连接URL、数据库名、认证信息等,确保Java应用能够成功连接到MongoDB服务器...

    mybatis-3.3.1

    在学习MyBatis 3.3.1时,还需要了解如何集成Spring,如何设计DAO接口,以及如何在实际项目中进行异常处理和日志记录。同时,熟练掌握MyBatis的映射和动态SQL特性,能显著提升开发效率,减少出错概率。通过阅读官方...

    spring-boot-paoding-rose.zip

    Paoding-Rose提供了丰富的API和工具,可以方便地集成到Spring Boot的生态中。例如,通过P6Spy监控数据库访问性能,或者使用Paoding-Rose的动态数据源切换功能,以应对复杂多变的业务场景。 总结来说,Spring Boot...

    spring boot搭建(二)word文档

    通过以上步骤,我们成功地在 Spring Boot 应用程序中集成了 Druid 数据库连接池,并实现了基本的监控功能。这不仅提高了应用程序的性能,也方便了数据库连接的管理和监控。接下来,可以根据实际需求进一步完善监控...

    maven-framework-project:基于maven的多框架和多视图融合技术(Struts1,Struts2,Spring,SpringMVC,Hibernate,Ibatis,MyBatis,Spring Data JPA,DWR)

    Maven框架项目该项目不再更新维护,请移步该项目基于maven3.0构建的,项目中融合了Struts1 , Struts2 , Spring , SpringMVC , ...项目中的持久化框架sql语句的跟踪分别采用log4jdbc结合log4j和p6spy ,在控

Global site tag (gtag.js) - Google Analytics