2012-03-21 68 views
6

自从我将两个grails项目升级到grails 2.0以来,grails-melody停止了对sql调用的记录。我已经尝试过不同版本的grails-melody插件,但是我在所有版本中都得到相同的错误(甚至是在迁移到grails 2.0之前的版本)。从Grails 2.0开始,Grails Melody插件不再记录SQL调用

我似乎无法找到任何有用的谷歌搜索。如果我对Grails的旋律插件

log4j = { 
    trace 'net.bull.javamelody' 
} 

添加跟踪调试我看到这个在日志中:

DEBUG bull.javamelody - datasources found in JNDI: [] 

这个问题真的让我疯了..有没有人在这里遇到这个问题?如果是的话,你找到了解决方案?

更新: Grails旋律甚至不能在新创建的项目中工作。我刚刚创建了一个带有一个域类和相应的控制器和视图的新Grails项目(grails 2.0.0)。然后安装grails-melody插件。插入一些数据。当我看着监视控制台,没有SQL数据正在记录..

Graph Tables

回答

4

的部分解决方法是设置在jdbc.factory_classDataSource.groovy休眠部分。例如:

hibernate { 
    cache.use_second_level_cache = true 
    cache.use_query_cache = false 
    cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory' 
    jdbc.factory_class = 'net.bull.javamelody.HibernateBatcherFactory' 
} 

这将记录所有经过hibernate的SQL查询。直接使用数据源的查询仍然不会被记录。

+0

不错!将尝试一下。谢谢!! – 2012-10-30 11:28:40

+0

可以确认它适用于GORM。谢谢!! – 2012-11-20 20:22:15

+0

1下,一个去:)需要找到一个纯SQL调用的解决方案(具有相当数量的性能) – 2012-11-20 20:24:40

0

我提高了阿泰勒的回答,因为它让我开始解决这个问题。但我还不能评论,所以我会在这里发布。

在JavaMelody文档的JDBC部分:JDBC中,它概述了如何使用他们自己的驱动外观进行直接休眠。我会认为这也会起作用,除非我不能在我的生活中找出放入DataSource.groovy来使其工作的参数。

参考:

<property name="hibernate.connection.driver_class">net.bull.javamelody.JdbcDriver</property> 
    <property name="hibernate.connection.driver">com.mysql.jdbc.Driver</property> 
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/myschema</property> 
    <property name="hibernate.connection.username">myuser</property> 
    <property name="hibernate.connection.password">mypassword</property>