jersey - Guice Jersey slf4j - 请求 ID 记录

标签 jersey slf4j

在我所有的请求中,有一个我想记录的 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/

相关文章:

java - ServletContextListener 严重 : Error configuring application listener of class marktest. 配置

java - 泽西网络服务安全问题

java - 如何禁用 Spring 记录 DEBUG 消息?

java - caliper 基准测试中的非确定性分配行为

java - 测试用例没有按预期运行?

scala - 每 x 天滚动一次的 logback filenamepattern

java - 如何从谷歌驱动器直接下载链接获取文件扩展名?

java - Hibernate jpql查询正确用法

java - 如果我有两条相等的路径但其中一条有参数,Jersey 中的行为是什么?

java - 如何让 OpenEJB 使用 slf4j?