Да, это директива, которую вы ищете, и я согласен - официальная документация немного сложна для понимания.
Вот как должна выглядеть конечная точка с 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)))
Счастливого хаккинга:)