MDCHolder
MDC 홀더. Slf4j MDC를 타입 안전하게 관리.
클래스 정의
sealed class MDCHolder(
val contextKey: String
)Companion Object 메서드
contextMap()
fun contextMap(): Map<String, String?>모든 MDC 컨텍스트를 Map으로 반환.
putAll()
fun putAll(request: HttpServletRequest)HttpServletRequest에서 모든 컨텍스트 추출하여 MDC에 설정.
clear()
fun clear()모든 MDC 컨텍스트 제거.
서브클래스
DatadogTraceId
object DatadogTraceId : MDCHolder(CorrelationIdentifier.getTraceIdKey())Datadog 트레이스 ID.
DatadogSpanId
object DatadogSpanId : MDCHolder(CorrelationIdentifier.getSpanIdKey())Datadog 스팬 ID.
SalesChannel
object SalesChannel : MDCHolder(Constants.TRIPLE_SALES_CHANNEL_HEADER)판매 채널. x-triple-sales-channel 헤더에서 추출.
메서드:
valueOf(request): 헤더에서 Channel 추출 (기본값: TRIPLE)get(): 현재 Channel 반환
SalesFunnel
object SalesFunnel : MDCHolder(Constants.TRIPLE_SALES_FUNNEL_HEADER)판매 퍼널. x-triple-sales-funnel 헤더에서 추출.
메서드:
valueOf(request): 헤더에서 Funnel 추출 (기본값: TRIPLE)get(): 현재 Funnel 반환
sealed class 구조
MDCHolder (sealed)
├─► DatadogTraceId
├─► DatadogSpanId
├─► SalesChannel
└─► SalesFunnel
특징
- sealed class: 컴파일 타임 완전성 검증
- 타입 안전: Channel/Funnel Enum으로 타입 안전
- Datadog 연동: trace/span ID 자동 추출
- 기본값 처리: 헤더 없을 시 TRIPLE 기본값