首页 > 解决方案 > 始终记录 ID

问题描述

在我的调试日志中,我看到每个请求都有这个理想的 id "0x277ec1de" 或类似的,因此以非常方便的方式对请求进行编号:

  2018-12-11 09:58:55.490 DEBUG 11868 --- [ctor-http-nio-4] io.netty.handler.ssl.SslHandler          : [id: 0x277ec1de, L:/0:0:0:0:0:0:0:1:8443 - R:/0:0:0:0:0:0:0:1:51951] HANDSHAKEN: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  2018-12-11 09:58:55.492 DEBUG 11868 --- [ctor-http-nio-4] o.s.w.s.adapter.HttpWebHandlerAdapter    : [277ec1de] HTTP GET "/v1/voice/selectCaching?q=*:*&rows=100"

如果我可以在我自己的代码中重新使用这个 ID,那么我就能够提取在错误消息之前发生的所有事情,并且只提取错误消息,而忽略所有其他一千个并行发生的请求。有没有人有线索,如何做到这一点?我正在使用 Spring-Boot 2.1.1,将 netty 作为嵌入式网络服务器。

标签: slf4jspring-webfluxreactor-netty

解决方案


您可以从服务器交换中获取该日志前缀信息ServerWebExchange#getLogPrefix()。同样的事情也适用于客户端ClientRequest#logPrefix()

请参阅有关 log ids 的 Spring WebFlux 参考文档


推荐阅读