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)
    }
  }
}