logo

slf4j MDC(Mapped Diagnostics Context)를 사용하여 로그에 맥락 더하기

language-logoSpring

• 로그 추적을 용이하게 하기 위해 Correlation ID를 사용하여 요청에 대한 로그들을 하나로 묶는 방법을 제시한다. Correlation ID는 단일 요청에 대해 무작위로 생성된 고유의 ID로, 이를 로그와 함께 남기면 문제가 있는 요청에 대한 로그들을 식별하여 그룹화할 수 있다.
• slf4j에서 제공하는 MDC(Mapped Diagnostics Context) 기능을 사용하여 Correlation ID를 로그와 함께 남기는 방법을 설명한다. MDC는 내부적으로 Thread Local을 사용하여 구현되어 있으며, Map 형태로 context를 관리한다. 이를 통해 로그 메시지에 Correlation ID를 포함시키는 것이 가능하다.
• MDC(Mapped Diagnostic Context)는 로그를 추적할 때 유용하며, slf4j에서 지원하는 기능으로, Appender에 따라 파일, 데이터베이스, Elastic Search 등 다양한 소스에 로그 메시지와 함께 맥락을 남길 수 있다. 이는 외부 모니터링 시스템을 활용하여 로그를 분석할 때 큰 도움이 된다.
• 하지만, 스프링의 @Async 어노테이션을 사용하거나 코틀린의 코루틴을 사용할 때에는 별도의 쓰레드에서 작업이 수행되기 때문에 MDC가 제대로 전파되지 않는다. 이를 해결하기 위해 스프링에서는 TaskDecorator 인터페이스를 제공하고, 코틀린에서는 MDCContext 도구를 제공하여 MDC를 복제하거나 전달할 수 있다.

thumbnail
북마크
공유하기
신고하기
9분 분량
조회수 228
profile-imageHudi
2년 전
Copyright © 2025. Codenary All Rights Reserved.