aar*_*ari 8 sql grails logging hibernate
我需要使用一个非常慢的请求来调试Grails应用程序.我有SQL日志记录,但希望看到SQL查询的数量而不用手动计算它们.
debug 'org.hibernate.SQL'
trace 'org.hibernate.type'
Run Code Online (Sandbox Code Playgroud)
对于eaxmple,在每个请求之后有以下行(其中x是对SQL Server进行的所有查询的数量):
[2012-10-04 13:41:45,049] [LoggingFilters] INFO - 请求在8296 ms内完成并生成x SQL语句
经过一些谷歌搜索,这似乎与Grails不可能,所以也许MySQL可以提供信息?
您可以使用Filters和Hibernate统计信息来完成.在conf文件夹中创建类ExampleFilters.groovy.这是班级的内容:
import org.hibernate.stat.Statistics
class ExampleFilters {
def sessionFactory
def filters = {
// your filters here
logHibernateStats(controller: '*', action: '*') {
before = {
Statistics stats = sessionFactory.statistics;
if(!stats.statisticsEnabled) {stats.setStatisticsEnabled(true)}
}
afterView = {
Statistics stats = sessionFactory.getStatistics()
double queryCacheHitCount = stats.getQueryCacheHitCount();
double queryCacheMissCount = stats.getQueryCacheMissCount();
double queryCacheHitRatio = (queryCacheHitCount / ((queryCacheHitCount + queryCacheMissCount) ?: 1))
println """
######################## Hibernate Stats ##############################################
Transaction Count:${stats.transactionCount}
Flush Count:${stats.flushCount}
Total Collections Fetched:${stats.collectionFetchCount}
Total Collections Loaded:${stats.collectionLoadCount}
Total Entities Fetched:${stats.entityFetchCount}
Total Entities Loaded:${stats.entityFetchCount}
Total Queries:${stats.queryExecutionCount}
queryCacheHitCount:${queryCacheHitCount}
queryCacheMissCount:${queryCacheMissCount}
queryCacheHitRatio:${queryCacheHitRatio}
######################## Hibernate Stats ##############################################
"""
stats.clear()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
有关各种Hibernate统计信息的更多信息,请阅读以下文章:http: //www.javalobby.org/java/forums/t19807.html
另请注意,使用它时会对性能产生影响,因此它应该只在开发环境中使用.
| 归档时间: |
|
| 查看次数: |
2628 次 |
| 最近记录: |