MDC가 뭐길래 traceId를 관리할까?

·
Infra
Spring Boot 프로젝트에서 @RestControllerAdvice로 에러를 한곳에서 처리하고, 로그에 traceId를 남기고 싶을 때가 있다. 이때 많은 사람들이 흔히 하는 실수가 있다. 바로 “Advice 안에서 traceId를 만들고 로깅하는 것”이다. 겉보기엔 간단하지만, traceId는 요청 전체를 추적하기 위한 값이기 때문에 예외가 터진 시점이 아니라, 요청이 들어온 시점에 만들어야 한다. 그래야 “요청 시작 → 서비스 로직 → 응답/예외 처리” 모든 로그가 같은 traceId로 묶인다.그래서 등장하는 개념: MDC (Mapped Diagnostic Context)MDC는 로그에 문맥(Context)을 담는 기능이다.각 스레드마다 독립적인 key-value 맵을 가지고 있어서 “현재 요청..