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 기본값