Как записать входящий запрос и ответ? - PullRequest
0 голосов
/ 02 июня 2019

Я использую Akka HTTP и хотел бы регистрировать каждый входящий запрос и исходящий результат.Я знаю, что существует директива logRequestResult , но как ее использовать?Или это правильно для моей цели?

1 Ответ

2 голосов
/ 05 июня 2019

Да, это директива, которую вы ищете, и я согласен - официальная документация немного сложна для понимания.

Вот как должна выглядеть конечная точка с 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)))

Счастливого хаккинга:)

...