- 현재 실행 흐름(Thread)에 key-value 형태의 컨텍스트를 붙여두는 공간 java MDC.put("traceId", "abc-123"); log.info("주문 생성"); // [traceId=abc-123] 주문 생성 - 로그를 찍을 때마다 매번 traceId를 파라미터로 넘기지 않아도 됨 - Logback / Log4j / SLF4J에서 공...
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 CString traceId = UUID.randomUUID().toString();
MDC.put("traceId", traceId);X-Trace-Id: abc-123GET /api
X-Trace-Id: abc-123String 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 전파 = 분산 연결고리