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

Grails:打印每个请求花费的时间,grails,groovy,Grails,Groovy,我想在我的控制器中打印每个请求,请求何时开始,何时结束,以及过程有多长。我是否必须将此代码单独添加到每个请求中,或者是否有任何通用的方法来执行此操作?除了存在各种各样的插件(例如),一个非常简单的解决方案是使用过滤器。这将引导您完成设置过滤器的过程,该过滤器将记录每个控制器操作的开始和结束时间 使用Grails过滤器的一个非常简单的示例是: class PerfFilter { def filters = { profiler(controller: '*', action: '*'

我想在我的控制器中打印每个请求,请求何时开始,何时结束,以及过程有多长。我是否必须将此代码单独添加到每个请求中,或者是否有任何通用的方法来执行此操作?

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

使用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}")
      }
    }
  }
}

如果您需要更健壮的整体性能监控,我强烈建议您使用Grails。

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

使用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}")
      }
    }
  }
}

如果您需要更健壮的整体性能监控,我强烈推荐Grails的。您可以使用一个并发和一个请求来执行ab测试,以便在需要时显示时间。我还建议使用一种叫做“New Relic”的工具。非常适合测试,并显示了处理请求和瓶颈的时间。

apache AB非常有帮助。您可以使用一个并发和一个请求来执行ab测试,以便在需要时显示时间。我还建议使用一种叫做“New Relic”的工具。非常适合测试,并显示了处理请求和瓶颈的时间。

有关快速简单的内容,您看过Profiler插件了吗?对于一些快速和简单的东西,你看过分析器插件了吗?我可以在过滤器中存储状态吗?例如,我可以将时间存储在'before'中,并在'after'中使用if吗?当然可以。您可以通过多种方式将其添加到参数映射、请求范围、闪存范围中。例如,在before
request.\u timeBeforeRequest=System.currentTimeMillis()
中,我链接到的博客文章有一个这样的例子。更新了我答案中的例子,包括显示执行控制器操作的总时间。我可以在过滤器中存储状态吗?例如,我可以将时间存储在'before'中,并在'after'中使用if吗?当然可以。您可以通过多种方式将其添加到参数映射、请求范围、闪存范围中。例如,在before
request中.\u timeBeforeRequest=System.currentTimeMillis()
我链接到的博客文章中有一个这样的例子。更新了我答案中的例子,包括显示执行控制器动作的总时间。