我正在使用此过滤器来保存有关请求和响应时间的日志:
import play.api.Logger
import play.api.mvc._
import scala.concurrent.Future
import play.api.libs.concurrent.Execution.Implicits.defaultContext
object LoggingFilter extends Filter {
def apply(nextFilter: (RequestHeader) => Future[SimpleResult])
(requestHeader: RequestHeader): Future[SimpleResult] = {
val startTime = System.currentTimeMillis
nextFilter(requestHeader).map { result =>
val endTime = System.currentTimeMillis
val requestTime = endTime - startTime
Logger.info(s"${requestHeader.method} ${requestHeader.uri} " +
s"took ${requestTime}ms and returned ${result.header.status}")
result.withHeaders("Request-Time" -> requestTime.toString)
}
}
}
但是我需要在日志中保存请求正文。我知道这可以使用Scala动作组合完成,但我无法弄清楚如何完成这项工作。 任何帮助??
答案 0 :(得分:0)
如果要访问请求正文,则需要覆盖apply(EssentialAction)
对象的方法EssentialFilter
。
供参考: