scala - 如何记录传入的请求和响应?
问题描述
我正在使用 Akka HTTP,并希望记录每个传入请求和传出结果。我知道,它存在一个logRequestResult指令,但是如何使用它呢?或者它是否适合我的目的?
解决方案
是的,这是您正在寻找的指令,我同意 - 官方文档有点难以掌握。
以下是端点的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)))
哈克快乐 :)
推荐阅读
- android - 共享首选项上的辅助功能设置更改值
- php - PostgreQL 从多维数组类型的 Json 字段中获取数据
- ruby-on-rails - 在循环中查找匹配项
- netty - ByteToMessageDecoder 网络
- cuda - 是否有将 half2 转换为 float2 的主机功能,反之亦然?
- javascript - 检查用户过去是否已经访问过链接
- powerquery - Power Query,拆分列日期和时间不起作用
- virtualbox - Virtualbox 网络、VM 内部通信、VM 和主机通信、VM 互联网通信
- excel - 删除工作表时将 VBA 执行传递给模块
- javascript - React Native FlatList 的 scrollToEnd() 不起作用