Guice Jersey slf4j-请求id日志记录

Guice Jersey slf4j-请求id日志记录,jersey,slf4j,Jersey,Slf4j,在我所有的请求中,都有一个头(请求id),我想在任何日志级别上记录它 有没有办法将其注入sl4fj日志记录?因此,记录器始终尝试记录请求id,例如记录异常,但不记录请求 还是我总是需要将其作为参数添加到日志中 这实际上与Guice无关 在slf4j中有MDC(映射诊断上下文)的概念。您可以将变量放入MDC中。这些变量是线程的本地变量,并添加到此线程生成的每个日志中。MDC的典型用例是在每个日志中添加与HTTP请求或会话id(即您的用例)关联的用户 看 举个简单的例子,您在MDC中放置了一个变量,

在我所有的请求中,都有一个头(请求id),我想在任何日志级别上记录它

有没有办法将其注入sl4fj日志记录?因此,记录器始终尝试记录请求id,例如记录异常,但不记录请求


还是我总是需要将其作为参数添加到日志中

这实际上与Guice无关

在slf4j中有MDC(映射诊断上下文)的概念。您可以将变量放入MDC中。这些变量是线程的本地变量,并添加到此线程生成的每个日志中。MDC的典型用例是在每个日志中添加与HTTP请求或会话id(即您的用例)关联的用户

举个简单的例子,您在MDC中放置了一个变量,如下所示:

MDC.put("userId", currentUser);
您可以使用以下命令以追加器格式添加变量:

%X{userId}

从理论上讲,通过注入一个请求范围的记录器,可以用Guice实现这个特性,但它实际上成本更高,而且与日志框架的集成度更低。我没劝你做这种事

谢谢。MDC是正确的方式。然而,我的项目是(和“必须”)使用七月。如果我设法得到slf4j+logback这是正确的方式来处理这个问题,因此我接受你的答案!它工作得很好!我没有注入请求范围的记录器,但我已经创建了一个请求范围的bean,它在后期构造中,在MDC中注册自己。非常感谢。