Playframework 记录起作用时响应体长度的正确方法?
我正在寻找在播放过滤器中记录响应正文长度的最佳方法 有比下面更好的方法吗?我不清楚这种方法是否会在所有情况下记录请求。如果客户端提前关闭连接,枚举数是否可能不会被完全使用Playframework 记录起作用时响应体长度的正确方法?,playframework,Playframework,我正在寻找在播放过滤器中记录响应正文长度的最佳方法 有比下面更好的方法吗?我不清楚这种方法是否会在所有情况下记录请求。如果客户端提前关闭连接,枚举数是否可能不会被完全使用 class AccessLogFilter extends Filter with Results { override def apply(next: RequestHeader => Future[Result])(request: RequestHeader): Future[Result] = { r
class AccessLogFilter extends Filter with Results {
override def apply(next: RequestHeader => Future[Result])(request: RequestHeader): Future[Result] = {
result.onFailure {
case t: Throwable => // log access, error
}
result.map { value =>
var responseLength = 0L
val insturmentedBody = value.body.map { chunk =>
responseLength += chunk.length
chunk
}.onDoneEnumerating {
// log access with response length
}
Result(value.header, insturmentedBody, value.connection)
}
}
}