自从我将两个grails项目升级为grails 2.0 grails-melody后停止记录sql调用。我已经尝试了不同版本的grails-melody插件,但是我在所有版本中都遇到了同样的错误(甚至是迁移到grails 2.0之前的版本)。
我似乎无法找到任何有用的谷歌搜索。如果我在grails melody插件上添加跟踪调试
log4j = {
trace 'net.bull.javamelody'
}
我在日志中看到了这一点:
DEBUG bull.javamelody - datasources found in JNDI: []
这个问题真的让我发疯了..有没有人在这里遇到过这个问题?如果是这样,你找到了解决方案?
更新: Grails旋律甚至不适用于新创建的项目。我刚刚创建了一个新的grails项目(grails 2.0.0),它有一个域类和相应的控制器和视图。然后安装了grails-melody插件。插入了一些数据。当我查看监视控制台时,没有记录sql数据..
答案 0 :(得分:4)
部分解决方法是在jdbc.factory_class
的休眠部分设置DataSource.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查询。直接使用数据源的查询仍然不会被记录。
答案 1 :(得分:0)
我提高了ataylor的答案,因为它让我开始解决这个问题。但是我还没有评论,所以我会在这里发布。
在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>