gpt4 book ai didi

scala - 记录 Play 2 中的所有请求

转载 作者:行者123 更新时间:2023-12-04 16:40:04 25 4
gpt4 key购买 nike

如何以与 Apache 记录(即包括 URL 和客户端 IP)的方式类似的方式记录进入 Play 2 应用程序的所有请求?

最佳答案

我想用 Play 2.5.4 做同样的事情。我花了一点时间把这些碎片放在一起,所以我想我会分享我的步骤,希望它能为别人节省时间:

  • 确保您有访问记录器。在 https://www.playframework.com/documentation/2.5.x/SettingsLogger 处有一个如何配置的示例。
    但您可能想使用这些设置;我用 <file>${application.home:-.}/logs/access.log</file> 配置了我的记录器, 和 <immediateFlush>true</immediateFlush> .
  • 在根包中创建一个新的 RequestHandler,扩展默认处理程序:

  • import javax.inject.Inject
    import play.api.http._
    import play.api.routing._
    import play.api.mvc.RequestHeader
    import play.api.Logger

    /**
    * Implemented to get custom, apache-style logging of requests without dumping the full netty wire.
    */
    class RequestHandler @Inject() (router: Router, errorHandler: HttpErrorHandler,
    configuration: HttpConfiguration, filters: HttpFilters) extends DefaultHttpRequestHandler(
    router, errorHandler, configuration, filters) {

    override def routeRequest(request: RequestHeader) = {
    Logger("access").info(s"Request from ${request.remoteAddress}: ${request}")
    super.routeRequest(request)
    }
    }


    我来自 Play 2.3,所以我最初计划使用 GlobalSettings,直到我找到了这个指南: https://www.playframework.com/documentation/2.5.x/GlobalSettings

    向任何想要特定于 Play 2.0 的答案的人道歉,但看到我自己的以 2.5 为重点的搜索将我带到这里,我认为这个答案不会造成太大伤害。

    关于scala - 记录 Play 2 中的所有请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16733246/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com