记录Play!2 Scala应用程序的请求时间

时间:2014-01-17 16:12:34

标签: scala playframework-2.0

我正在尝试在Scala Play!2应用中记录所有请求的时间。我想我需要覆盖onRequestReceived以返回调用操作的新Handler,然后记录时间,然后返回操作的结果。但我不知道如何调用处理程序。

这就是我所拥有的:

override def onRequestReceived(requestHeader: RequestHeader) = {
  val startTime = System.currentTimeMillis

  val (rh, handler) = super.onRequestReceived(requestHeader)

  def newHandler = Action {
    val result = handler.apply // No such method

    val requestTime = System.currentTimeMillis - startTime
    Logger.debug("time: " + requestTime)

    result
  }

  (rh, newHandler)
}    

但是handler.apply不存在。如何调用super.onRequestReceived返回的处理程序。而且,更重要的是,我是否正确地采取了这种方式?

1 个答案:

答案 0 :(得分:1)

那么,为什么不调用基类并记录基类中的方法处理它的时间,而不是尝试自己处理请求的任务。换句话说:

override def onRequestReceived(request: RequestHeader) = {
  val startTime = System.currentTimeMillis()
  val result = super.onRequestReceived(request)
  val endTime = System.currentTimeMillis()
  logger.debug("Request lasted:" + (endTime - startTime) + " ms")
  result
}