scala - Play Framework - 存储有关当前请求的信息

标签 scala playframework-2.0

在我的 play framework 2 应用程序中,我想要一条日志消息,其中包含请求、响应和有关响应的一些详细信息 - 例如从外部网络调用返回的搜索结果的数量。

我现在拥有的是这样的过滤器:

object AccessLog extends Filter {
  import play.api.mvc._
  import play.api.libs.concurrent.Execution.Implicits._

  def apply(next: RequestHeader => Future[SimpleResult])(request: RequestHeader): Future[SimpleResult] = {
    val result = next(request)
    result map { r =>
      play.Logger.info(s"Request: ${request.uri} - Response: ${r.header.status}")
    }
    result
  }
}

在记录时,我已经将我的类转换为 json,因此将 json 解析回对象似乎很浪费,因此我可以记录有关它的信息。

是否有可能在请求管道中更早地计算搜索结果的数量,可能放入字典中,并在我在此处记录消息时将它们拉出?

我在看 flash,但不希望以 cookie 的形式发送这些值。也许我可以改为清除闪光灯。如果有更合适的方法,我希望看到。

这是不涉及用户帐户或 session 的只读 API 的一部分。

最佳答案

您可以尝试使用 play.api.cache.Cache object如果你能想出一个可重现的唯一请求标识符。记录请求后,您可以将其从 Cache 中删除。

关于scala - Play Framework - 存储有关当前请求的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20746597/

相关文章:

Scala:仅使用指定的路径相关类型参数调用函数

scala - 如何使用特征 scala.Proxy

scala - 为什么 Spark SQL 将 String "null"转换为 Float/Double 类型的 Object null?

playframework-2.0 - 如何强制 Ebean 进行左连接,而不是连接?

maven - 让 Play/SBT 应用程序依赖于 Maven POM

scala - 为什么我不能在扩展通用特征的类中调用参数为 `this` 的方法?

java - Scala 的 java char[] 等价物是什么?

javascript - 为 Web 应用程序实现 pub/sub 模式

playframework - 在网络文件系统上使用 Play 框架自动重新加载

nginx - 如何在 Play Framework 2 中获取用户的 IP?