我正在尝试在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返回的处理程序。而且,更重要的是,我是否正确地采取了这种方式?
答案 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
}