Grails:打印每个请求花费的时间

Eri*_*pir 0 grails groovy

我想打印控制器中的每个请求,请求何时开始,何时结束以及该过程需要多长时间。我是否必须将此代码单独添加到每个请求中,或者是否有任何通用方法可以做到这一点?

Jos*_*ore 5

除了现有的各种插件(例如Profiler)之外,一个非常简单的解决方案是使用过滤器。这篇博文将引导您完成设置过滤器的过程,该过滤器将记录每个控制器操作的开始和结束时间。

使用 Grails 过滤器的一个非常简单的示例是:

class PerfFilter {
  def filters = {
    profiler(controller: '*', action: '*') {
      before {
        request._startTime = System.currentTimeMillis()
        log.trace("Beginning ${controllerName} ${actionName}")
      }
      after {
        log.trace("Finished ${controllerName} ${actionName}")
        log.trace("Total time to execute was: ${System.currentTimeMillis() - request._startTime}")
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如果您需要更强大的整体性能监控功能,我强烈推荐Grails 的Javamelody 插件。