我有一个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代码和日志中处理异常的堆栈跟踪。
有没有办法定义过滤器,以便它包装请求发布错误处理程序调用?