SSH中集成P6SPY,irontrack sql,sqlprofiler

http://blog.csdn.net/blackwingzhong/article/details/3858356


开始进行配置的时候,主要是参考了俞黎敏的文章《监控和剖析数据库操作 -- P6Spy、SQL Profiler、IronTrack SQL 使用简介》和《为struts+spring+hibernate增加显示数据库操作语句功能》。

  首先,把P6SPY集成到Spring中(使用的是c3p0):

[xhtml]  view plain copy
  1.  <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">     
  2.         <property name="driverClass" value="com.mysql.jdbc.Driver"></property>    
  3.         <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/fangwang?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true"></property>    
  4.         <property name="user" value="root"></property>    
  5.         <property name="password" value="***"></property>  
  6. </bean>  
  7.   
  8. <!-- 配置p6spy -->  
  9.    <bean id="myP6DataSource" class="com.p6spy.engine.spy.P6DataSource">  
  10.         <constructor-arg>  
  11.             <ref local="dataSource"/>  
  12.         </constructor-arg>  
  13.     </bean>  
  14.         
  15.     <!-- Hibernate SessionFactory -->     
  16.     <bean id="sessionFactory"    
  17.         class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">     
  18.         <property name="dataSource">     
  19.             <ref local="myP6DataSource" />   <!-- 为p6spy修改了数据源, -->  
  20.         </property>     
  21.         <property name="hibernateProperties">     
  22.             <props>     
  23.                 <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>     
  24.                 <prop key="hibernate.show_sql">true</prop>     
  25.                 <prop key="hibernate.generate_statistics">true</prop>     
  26.                 <prop key="hibernate.connection.release_mode">auto</prop>     
  27.                 <prop key="hibernate.autoReconnect">true</prop>     
  28.             </props>     
  29.         </property>  
  30.         <property name="mappingDirectoryLocations">  
  31.             <list>  
  32.                 <value>classpath:/com/china1819/pojo</value>  
  33.             </list>  
  34.         </property>             
  35.     </bean>    

  这种方法不同与俞黎敏那种。这样就可以优雅的把P6SPY集成到Spring当中。并不需要修改驱动程序,此外,也不用修改spy.properties文件中的realdriver部分了。但如果想把sql的log文件spy.log放到自己喜欢的地方,那么还是要修改:

  logfile=c:/spy.log

  上面的路径可以按照自己喜欢设置。

  以上设置完成后,把p6spy.jar放到自己项目的web-inf/lib目录下,而spy.properties则放到web-inf/classes下。跟着启动tomcat,那么就可以看到spy.log文件中不断有sql语句被记录下来。

 

  接着集成sqlprofiler。

  下载好sqlprofiler并解压后,把sqlprofiler.jar放到web-inf/lib目录下,而sqlprofiler解压后目录下的spy.properties拷贝到web-inf/classes目录下覆盖掉上面的p6spy默认的spy.properties。同样,如果想把spy.log文件放到一个方便查看的地方,还是要修改sqlprofiler中复制到classes目录下的spy.properties文件,把 logfile=c:/spy.log 设置为自己需要的路径。

  经过简单的配置,就把sqlprofiler集成好了,但是在启动项目之前,一定要先启动sqlprofiler:

  打开命令行提示符,切换到项目的web-inf/lib目录下,运行:

  java -jar sqlprofiler.jar

  先启动程序,界面如下:

  sqlprofiler

  跟着,就可以启动tomcat,运行项目了。

 

  集成irontracksql。

  不知什么原因,irontrack的官方网站访问不了,幸亏俞同志的文章那里提供了irontrack的其它下载地址。可以从[这里下载]。

  如果没有集成sqlprofiler,那么单纯集成irontracksql也是挺简单的,只要把irontracksql.jar复制到项目的web-inf/lib目录下,把irontracksql解压后文件夹下的spy.properties复制到web-inf/classes下面就行(spy.properties文件也可以放到tomcat/bin目录下,而非classes下,这样也可以正常工作。)。

  这里需要注意的是,虽然irontracksql.jar复制到项目的web-inf/lib目录下了,但是要运行的并不是这个jar文件,在copy到lib目录下的同时,还有把它解压后的整个irontracksql文件夹copy到另外一个地方,例如:c:/,要启动的就是 c:/根目录下的sqlprofiler.jar。有些人单独把irontracksql.jar拷贝出来,再用:java -jar irontracksql.jar 命令来运行,就会报以下的错误:

[java]  view plain copy
  1. Exception in thread "main" java.lang.NoClassDefFoundError: com/incors/plaf/kunststoff/KunststoffLookAndFeel  
  2. Caused by: java.lang.ClassNotFoundException: com.incors.plaf.kunststoff.KunststoffLookAndFeel  
  3.     at java.net.URLClassLoader$1.run(URLClassLoader.java:200)  
  4.     at java.security.AccessController.doPrivileged(Native Method)  
  5.     at java.net.URLClassLoader.findClass(URLClassLoader.java:188)  
  6.     at java.lang.ClassLoader.loadClass(ClassLoader.java:306)  
  7.     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)  
  8.     at java.lang.ClassLoader.loadClass(ClassLoader.java:251)  
  9.     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)  

  本来是打算在项目中同时集成sqlprofiler和irontracksql的,但发现这样有冲突,只好作罢。简单分析了一下原因,发现sqlprofiler和irontracksql解压后的各自带的spy.properties文件主要不同是使用的log4j appender不同。sqlprofiler使用的是:

  appender=com.p6spy.engine.logging.appender.Log4jLogger

  而irontracksql使用的是:

  appender=com.p6spy.engine.logging.appender.FileLogger

  而应该是只能有一个appender,所以,只能使用一个监控程序了。

  下面列出两个appender的配置信息:

  

[java]  view plain copy
  1. #irontracksql的配置  
  2.   
  3. appender=com.p6spy.engine.logging.appender.FileLogger  
  4.   
  5. logfile     = c:/spy.log  
  6.   
  7. append=true  
  8.   
  9. #The following are for log4j logging only  
  10. log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender  
  11. log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout  
  12. log4j.appender.STDOUT.layout.ConversionPattern=p6spy - %m%n  

[java]  view plain copy
  1. #sqlprofiler的配置  
  2.   
  3. appender=com.p6spy.engine.logging.appender.Log4jLogger  
  4.   
  5. append=true  
  6.   
  7. log4j.appender.SQLPROFILER_CLIENT=org.apache.log4j.net.SocketAppender  
  8. log4j.appender.SQLPROFILER_CLIENT.RemoteHost=localhost  
  9. log4j.appender.SQLPROFILER_CLIENT.Port=4445  
  10. log4j.appender.SQLPROFILER_CLIENT.LocationInfo=true  
  11.   
  12. #log4j.logger.p6spy=INFO,STDOUT  
  13. log4j.logger.p6spy=DEBUG, SQLPROFILER_CLIENT  

 

-----------------------------------伟大的分割线--------------------------------------------------

  本来以为sqlprofiler和irontracksql是无法共存的,一轮测试后,终于把他们集成到一起了。主要是修改spy.properties文件,其中核心的代码如下:

[c-sharp]  view plain copy
  1. #设置irontrack sql  
  2. module.ibeam=com.irongrid.ibeam.server.IBeamFactory  
  3. monitorport=2000  
  4.  
  5. #specifies the appender to use for logging  
  6. appender=com.p6spy.engine.logging.appender.Log4jLogger  
  7.  
  8. #The following are for log4j logging only  
  9. log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender  
  10. log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout  
  11. log4j.appender.STDOUT.layout.ConversionPattern=p6spy - %m%n  
  12.   
  13. log4j.appender.SQLPROFILER_CLIENT=org.apache.log4j.net.SocketAppender  
  14. log4j.appender.SQLPROFILER_CLIENT.RemoteHost=localhost  
  15. log4j.appender.SQLPROFILER_CLIENT.Port=4445  
  16. log4j.appender.SQLPROFILER_CLIENT.LocationInfo=true  
  17.  
  18. #log4j.logger.p6spy=INFO,STDOUT  
  19. log4j.logger.p6spy=DEBUG,SQLPROFILER_CLIENT,STDOUT  

 

  主要修改是,使用appender=com.p6spy.engine.logging.appender.Log4jLogger而不是FileLogger,但这样设置后,logfile=.... 这个设置就没用了,因为它是真的file logger有效的。在启动tomcat的窗口中,只要看到 monitor port set to 2000,那么就说明irontracksql启动成功了。

  这样,首先启动sqlprofiler,在启动项目,接着启动irontracksql,ok,都成功运行了,最后来张全家福:

sqlprofiler+irontracksql

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值