Guice Jersey slf4j - 请求 ID 记录

Guice Jersey slf4j - request id logging

在我的所有请求中,有一个 header(请求 ID)我想记录,以防万一 - 在任何日志级别。

有没有办法将其注入到 sl4fj 日志记录中?这样记录器总是尝试记录请求 ID,例如记录异常,但是请求。

或者我是否总是需要将其作为参数添加到日志记录中?

这与 Guice 没有太大关系。

你在slf4j中有一个MDC(Mapped Diagnostic Context)的概念。您可以将变量放入 MDC 中。这些变量是线程本地的,并被添加到该线程生成的每个日志中。 MDC 的典型用例是在每个日志中添加与 HTTP 请求关联的用户或会话 ID(即您的用例)。

http://logback.qos.ch/manual/mdc.html

举个简短的例子,您可以像这样在 MDC 中放置一个变量:

MDC.put("userId", currentUser);

并且您可以使用附加格式添加变量:

%X{userId}

理论上,可以通过注入请求范围的记录器来使用 Guice 实现此功能,但它确实成本更高,而且与日志框架的集成度更低。我可没劝你做这种事!