MDC.put("traceId", "abc-123");
log.info("주문 생성");
// [traceId=abc-123] 주문 생성
HTTP 요청
└─ Thread-1
├─ MDC.put(traceId)
├─ log()
├─ log()
└─ 요청 종료 → MDC 제거
Client -> Service A -> Service B -> Service C
String traceId = UUID.randomUUID().toString();
MDC.put("traceId", traceId);
X-Trace-Id: abc-123
GET /api
X-Trace-Id: abc-123
String traceId = request.getHeader("X-Trace-Id");
MDC.put("traceId", traceId);
[traceId=abc-123] Service A 요청 수신
[traceId=abc-123] Service B 주문 조회
[traceId=abc-123] Service C 결제 처리
traceId=abc-123 검색MDC = 로컬 컨텍스트
traceId 전파 = 분산 연결고리