Skip to content

Latest commit

 

History

History
53 lines (38 loc) · 1.84 KB

async-context-mdc.ru.md

File metadata and controls

53 lines (38 loc) · 1.84 KB

Асинхронный контекст и MDC

Обстоятельство

  • Используется SLF4J MDC.
  • Используется асинхронный контекст.
  • Некоторые свойства контекста должны быть включены в записи журнала событий.

Использование

В своем IoC-контейнере зарегистрируйте класс AsyncContextMdcAdapter как singleton-зависимость приложения.

На старте приложения вызовите метод run():

AsyncContextMdcAdapter mdcAdapter;
...
mdcAdapter.run();

Например, контекст содержит свойство userId и вы используете log4j2. Чтобы добавить это свойство в записи журнала, добавьте его в шаблон записи как %X{userId}.

Spring Boot

Если вы используете Spring Boot, добавьте следующую регистрацию:

@Bean
public AsyncContextMdcAdapter mdcAdapter(IAsyncContext context) {
    return new AsyncContextMdcAdapter(context);
}

И обработчик события запуска приложения:

@Component
public class AsyncContextMdcAdapterRunner {

    private final AsyncContextMdcAdapter mdcAdapter;

    ...

    @EventListener(ApplicationReadyEvent.class)
    public void onApplicationStarted() {
        mdcAdapter.run();
    }
}