TGViewer
Java guru Java guru @java_guru · 923 subscribers
Post #44 1.17K
Связь логов через correlation id в многопоточных\многопользовательских системах.

В многопоточных\многопользовательских системах часто возникает задача ввести атрибут по которому можно будет находить логически связанные между собой записи логов. Например: записи относящиеся к сессии конкретного пользователя.

В Log4j для этой задачи есть класс MDC https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/MDC.html

На старте обработки можно сохранить уникальный идентификатор. В качестве уникального идентификатора можно взять значение либо прикладного поля либо сгенерировать суррогатное UUID.randomUUID().toString()

MDC.put(CORRELATION_ID_LOG_VAR_NAME, correlationId);

CORRELATION_ID_LOG_VAR_NAME можно определить как
private static final String CORRELATION_ID_LOG_VAR_NAME = "correlationId";

Если по мере исполнения потребуется его извлечь, то можно вызвать Object correlationId = MDC.get(CORRELATION_ID_LOG_VAR_NAME);

В конце нужно обязательно почистить за собой

MDC.remove(CORRELATION_ID_LOG_VAR_NAME);

Для вывода в лог нужно добавить в log4j.xml значение %X{correlationId}

<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %p [%c] %X{correlationId} - &lt;%m&gt;%n"/>
</layout>
</appender>
More from @java_guru
  1. Jan 14, 2026Spring TestContext Framework: Переопределение бинов в интеграционных тестах В Spring Frame…
  2. Oct 31, 20253D-моделирование с Rodin AI Компания Hyper3D выпустила обновление своего популярного инстр…
  3. Aug 29, 2025Представьте себе мир, где ваш поиск становится умнее и быстрее благодаря современным техно…
  4. Aug 22, 2025🔥 Как защитить персональные данные пользователей в условиях строгих правовых ограничений?…
  5. Aug 19, 2025Виртуальные потоки Java: разбор тестовых сценариев Команда Open Liberty изучила влияние ви…
  6. Aug 13, 2025HHH90003004: firstResult/maxResults specified with collection fetch; applying in memory Hi…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →