在我所有的请求中,有一个我想记录的 header (请求 ID),以防万一 - 在任何日志级别。
有没有办法将其注入(inject)到 sl4fj 日志记录中?这样记录器总是尝试记录请求 ID,例如记录异常,但请求。
或者我是否总是需要将其作为参数添加到日志记录中?
最佳答案
这与 Guice 没有真正的关系。
您在 slf4j 中有一个 MDC(映射诊断上下文)的概念。您可以将变量放入 MDC 中。这些变量是线程本地的,并被添加到该线程生成的每个日志中。 MDC 的典型用例是在每个日志中添加与 HTTP 请求关联的用户或 session ID(即您的用例)。
参见 http://logback.qos.ch/manual/mdc.html
举个简短的例子,您可以像这样在 MDC 中放置一个变量:
MDC.put("userId", currentUser);
你可以添加一个appender格式的变量:
%X{userId}
理论上,可以通过注入(inject)请求范围的记录器来使用 Guice 实现此功能,但它确实成本更高,而且与日志框架的集成度更低。我可没劝你做这种事!
关于jersey - Guice Jersey slf4j - 请求 ID 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35986987/