2012-07-03 41 views
2

我正在使用grails 2.0.4。儘管sql探查器客戶端正在連接; p6spy沒有記錄任何東西。使用p6spy插件配置Grails 2.0.4和sql分析

我懷疑問題在於屬性文件,或者與我的Config.groovy log4j設置存在衝突。

我一直在看這一整天;任何幫助,高度讚賞。

•spy.properties

module.log=com.p6spy.engine.logging.P6LogFactory 

realdriver=oracle.jdbc.driver.OracleDriver 

dateformat=HH:mm:ss 

deregisterdrivers=false 

executionthreshold= 

outagedetection=false 

outagedetectioninterval= 

filter=false 

include = 

exclude = 

sqlexpression = 

autoflush= true 

includecategories= 

excludecategories= 

stringmatcher= 

stacktrace=false 

stacktraceclass= 

reloadproperties=false 

reloadpropertiesinterval=60 

useprefix=false 

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

append=true 

log4j.appender.SQLPROFILER_CLIENT=org.apache.log4j.net.SocketAppender 

log4j.appender.SQLPROFILER_CLIENT.RemoteHost=localhost 

log4j.appender.SQLPROFILER_CLIENT.Port=4445 

log4j.appender.SQLPROFILER_CLIENT.LocationInfo=true 

log4j.logger.p6spy=DEBUG,SQLPROFILER_CLIENT 

•DataSource.groovy的

dataSource { 

    pooled = true 

    logSql = true 

    //driverClassName = "oracle.jdbc.driver.OracleDriver" 

    driverClassName = "com.p6spy.engine.spy.P6SpyDriver" // use this driver to enable p6spy logging 

    dialect = 'org.hibernate.dialect.Oracle10gDialect' 

} 

•Config.groovy中

// log4j configuration 

log4j = { 

    appenders { 

     console name:'stdout', layout:pattern(conversionPattern: '%d{ISO8601} [%c{1}] %p: %m%n') 

    } 

    info 'grails.app' // Logging warnings and higher for all of the app 

    error 'org.codehaus.groovy.grails.web.servlet', // controllers 
      'org.codehaus.groovy.grails.web.pages', // GSP 
      'org.codehaus.groovy.grails.web.sitemesh', // layouts 
      'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping 
      'org.codehaus.groovy.grails.web.mapping', // URL mapping 
      'org.codehaus.groovy.grails.commons', // core/classloading 
      'org.codehaus.groovy.grails.plugins', // plugins 
      'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration 
      'org.springframework', 
      'org.hibernate', 
      'net.sf.ehcache.hibernate' 

    trace 'org.hibernate.type' 

} 
+0

如果你只是想看到的SQL Hibernate是生成,一個簡單的替代P6SPY是爲'org.hibernate.SQL'日誌級別設置爲''中配置DEBUG' .groovy'。 – ataylor

+0

感謝Taylor的回覆,我的目標是驗證我的ehcache策略是否提升了性能。我每分鐘收到數千個電話。 – Sami

+0

你有沒有設法讓這個工作以某種方式? – NoUsername

回答

0

P6Spy沒有檢測到H2的正確驅動程序,我有一些問題。最後我去了log4jdbc。它有更新的代碼。 P6Spy在相當一段時間還沒有更新,但可能沒有必要。我在我的博客上寫了幾條關於我的經驗log4jdbc, grails and tomcat7。這可能對你有用處!

1

此問題最可能的原因是Oracle PJSpyDriver之前,正在由DriverManager註冊Oracle JDBC驅動程序。 P6Spy 1.3要求P6SpyDriver在真正的驅動程序之前註冊。這就是允許它在不對JDBC URL進行任何修改的情況下工作的原因。

這個問題有兩種可能的解決方案。

1)在spy.properties中設置'deregisterdrivers = false'。這會導致配置爲spy.properties中'realdriver'的驅動程序在加載P6SpyDriver時被註銷並重新註冊。這會在DriverManager中強制執行正確的順序。

2)在spy.properties中設置'useprefix = true',並將前綴'p6spy:'添加到您的JDBC URL中。由於JDBC URL不同,註冊順序不再重要。

而且故障排除提示:http://p6spy.github.io/p6spy/1.3/troubleshooting.html