如何使用未过滤的记录所有请求

时间:2014-07-13 15:20:31

标签: scala interceptor unfiltered

我正在使用未经过滤的提供restful API,并定义了几个意图。现在我有一个新的要求,我必须将所有请求url记录到一个文件中,但我找不到一个好的解决方案。

我已经阅读了未经过滤的文档,在SpringMVC中找不到类似“过滤器/拦截器”的文件。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

不知道SpringMVC。但是,如果要记录每个请求,可以编写日志记录Intent

object RequestLogging {
  def apply[A, B](intent: Cycle.Intent[A, B]) =
    Cycle.Intent[A, B] {
      case req =>
        Cycle.Intent.complete(intent)(req) ~> new ResponseFunction[Any]() {
          override def apply[C <: Any](resp: HttpResponse[C]) = {
            println(s"${req.remoteAddr} ${new Date()} ${req.method} ${req.uri} ${resp.underlying.asInstanceOf[Response].getStatus}")
            resp
          }
        }
    }
}

然后像这样包装你当前的Intent来使用它:

val plan = new unfiltered.filter.Plan {
  def intent = RequestLogging {
    case GET(Path("/record/1")) => ...
  }
}