首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多线程系统中的Logback和MDC

多线程系统中的Logback和MDC
EN

Stack Overflow用户
提问于 2019-01-11 23:06:17
回答 1查看 2.9K关注 0票数 1

我有一个多线程应用程序,其中每个线程使用不同的名称操作不同的对象,即:

代码语言:javascript
复制
process-1
process-2
process-3

目前,该模式如下所示:

代码语言:javascript
复制
[%thread] - %msg %n

我想要达到这样的效果:

代码语言:javascript
复制
[%thread] %processName - %msg %n

其中processName是在对象中指定的。

我的目标是将这些名称添加到生成的日志中,这样当我需要查看历史记录时,就可以非常容易地对它们进行grep。我已经记录了线程名,但这对我来说还不够。

我已经开始使用MDC,然而,事实证明它将存储的名称保存在所有线程之间。在最好的情况下,它将该名称用于所有日志,在最坏的情况下,该属性为空。

无论有没有MDC,我如何实现这种线程安全的日志记录?

EN

回答 1

Stack Overflow用户

发布于 2019-01-12 01:25:29

我假设每个进程运行在不同的线程中,因此当启动一个线程时,将id进程放入MDC。

代码语言:javascript
复制
// this method runs in different thread for each invocation.
public void startProcess(String idProcess) {
    MDC.put("processName", idProcess);
     ....

在您的logback中更改模式

代码语言:javascript
复制
[%thread] %X{processName} %msg %n

put方法将id保存在线程中,因此每个线程将具有不同的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54149123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档