为每条日志消息添加自定义值

Paw*_*ski 4 java slf4j spring-boot

假设我有一个带有端点的 REST API /user/{user_id}/foo。现在,当调用它时,我希望处理此请求的所有日志都包含有关{user_id}. {user_id}是否可以在不传递每个方法的情况下实现这一目标?

我使用 SLF4j 进行日志记录,我的应用程序基于 Spring Boot。

Seb*_*amp 5

您还可以使用 MDC 来实现此目的,请参阅此处。它本质上是一个地图,您只需将上下文信息放入其中(例如用户 ID),然后就可以在日志布局中使用它。请注意,这仅适用于某些底层框架,例如 logback,其中示例布局模式如下所示:

<Pattern>%X{user_id} %m%n</Pattern>
Run Code Online (Sandbox Code Playgroud)

检查logback 手册以获取更多详细信息。