【问题标题】:How to log incoming request and response?如何记录传入的请求和响应?
【发布时间】:2019-06-05 15:05:48
【问题描述】:

我正在使用 Akka HTTP,并希望记录每个传入请求和传出结果。我知道,它存在一个logRequestResult 指令,但是如何使用它呢?还是适合我的目的?

【问题讨论】:

    标签: scala akka akka-http


    【解决方案1】:

    是的,这是您正在寻找的指令,我同意 - 官方文档有点难以掌握。

    下面是带有logRequestResult 的端点的样子:

        val requestHandler: Route = logRequestResult("req/resp", Logging.InfoLevel) {
            handleExceptions(errorHandler) {
                endpointRoutes
            }
        }
    
        def start()(implicit actorSystem: ActorSystem,
                    actorMaterializer: ActorMaterializer): Future[Http.ServerBinding] =
            Http().bindAndHandle(
                handler = requestHandler,
                interface = host,
                port = port)
    
    

    请注意,您可以为每个请求-响应条目选择一个通用前缀,即req/resp,以及请求-响应日志可用的日志级别,即Logging.InfoLevel

    上面的例子产生类似于下面的日志行:

    [your-actor-system-akka.actor.default-dispatcher-19] INFO  akka.actor.ActorSystemImpl - req/resp: Response for
      Request : HttpRequest(HttpMethod(GET),http://<host>/<path>,List(Host: <host>, Connection: close: <function1>),HttpEntity.Strict(none/none,ByteString()),HttpProtocol(HTTP/1.1))
      Response: Complete(HttpResponse(200 OK,List(),HttpEntity.Strict(text/plain; charset=UTF-8,OK),HttpProtocol(HTTP/1.1)))
    

    哈克快乐 :)

    【讨论】:

      猜你喜欢
      • 2019-01-10
      • 2016-05-01
      • 1970-01-01
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 2017-02-12
      • 1970-01-01
      • 2023-03-15
      相关资源
      最近更新 更多