gpt4 book ai didi

java - Logback sfl4j MDC对http请求是唯一的

转载 作者:行者123 更新时间:2023-11-30 02:19:47 25 4
gpt4 key购买 nike

我正在使用 Spring Boot 1.5.7。该应用程序提供 Restful API。我有一个过滤器,我在其中使用用户名和事务 ID 设置 MDC。

    MDC.put("user", authentication.getPrincipal().toString());
MDC.put("trans-id",authentication.getTokenId());

我希望每个请求都有一个 MDC 映射,而不是在不同的请求之间共享 MDC 数据。

你能帮我一下吗?谢谢。

更新:

日志下面每一行都是一个http请求:

2017-11-10 21:34:52.867 | user=USER, trans-id=c28f4b68-b5f3-4b5c-9bb5-f18ba9d1cd7d, session-id=daaddaadda |   INFO 976 - [tp1005246661-89] i.e.h.controller.IsAliveController       : /isAlive WSC | 

2017-11-10 21:34:59.551 | user=USER, trans-id=4a0eaec1-184a-4587-8fce-ab013ad6539b, session-id=daaddaadda | INFO 976 - [tp1005246661-89] i.e.h.controller.IsAliveController : /isAlive public |

在第二个请求中,我仅设置了 trans-id,而在 MDC 映射中,在第一个请求中设置了 session ID 和用户。

最佳答案

我假设您使用 logback 作为日志记录实现,并且在任何时间点,一个线程都在处理一个请求直到完成。根据documentation ,MDC 已经按线程存储,因此它足以满足您的用例。在我们的项目中,我们使用 MDC 来跟踪线程 id(而不是线程名称)以进行调试,它按预期工作

The MDC manages contextual information on a per thread basis. Typically, while starting to service a new client request, the developer will insert pertinent contextual information, such as the client id, client's IP address, request parameters etc. into the MDC

关于java - Logback sfl4j MDC对http请求是唯一的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47229016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com