我有一个多线程应用程序,其中每个线程使用不同的名称操作不同的对象,即:
process-1
process-2
process-3目前,该模式如下所示:
[%thread] - %msg %n我想要达到这样的效果:
[%thread] %processName - %msg %n其中processName是在对象中指定的。
我的目标是将这些名称添加到生成的日志中,这样当我需要查看历史记录时,就可以非常容易地对它们进行grep。我已经记录了线程名,但这对我来说还不够。
我已经开始使用MDC,然而,事实证明它将存储的名称保存在所有线程之间。在最好的情况下,它将该名称用于所有日志,在最坏的情况下,该属性为空。
无论有没有MDC,我如何实现这种线程安全的日志记录?
发布于 2019-01-12 01:25:29
我假设每个进程运行在不同的线程中,因此当启动一个线程时,将id进程放入MDC。
// this method runs in different thread for each invocation.
public void startProcess(String idProcess) {
MDC.put("processName", idProcess);
....在您的logback中更改模式
[%thread] %X{processName} %msg %nput方法将id保存在线程中,因此每个线程将具有不同的值。
https://stackoverflow.com/questions/54149123
复制相似问题