连接Play过滤器以包装错误处理程序

时间:2015-04-23 00:41:59

标签: scala playframework

我有一个Play过滤器,可以像这样执行一些后续请求记录:

class LoggingFilter extends Filter with LazyLogging {
  override def apply(f: (RequestHeader) => Future[Result])(rh: RequestHeader): Future[Result] =
    f(rh) andThen {
      case Success(result) =>
        logger.info(s"[SUCCESS] ${result.header.status}")
      case Failure(e) =>
        val end = System.currentTimeMillis()
        val duration = end - start
        logger.error(s"[FAILURE] ${e.getMessage}}", e)
    }
  }
}

我还有onServerError处理程序,它将某些已知异常映射到相应的Result。不幸的是,在错误处理程序将已知异常转换为结果之前调用过滤器,使我没有发送给调用者的STATUS代码和日志中处理异常的堆栈跟踪。

有没有办法定义过滤器,以便它包装请求发布错误处理程序调用?

0 个答案:

没有答案