You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
MDC 는 이미 JSON 로그로 나가고 있었지만 traceId 를 넣는 곳이 @LogExecutionTime 안뿐이라, 인증 실패나 없는 경로처럼 컨트롤러에 닿기 전에 끝나는 요청에는 아무 값도 없었습니다. 실제로 이번에 500 원인을 찾을 때 타임스탬프로 로그를 뒤져야 했습니다.
판단
이유
보안 필터보다 먼저 실행
401·404 도 추적 대상
들어온 X-Request-Id 이어받기
게이트웨이·LB 와 같은 요청으로 묶임
응답 헤더 + 오류 본문 양쪽
사용자는 화면을 캡처해 보내는데 헤더는 캡처에 안 나옴
외부 값 정제
개행이 섞이면 로그 한 줄을 위조할 수 있음
종료 시 MDC 비움
톰캣 스레드 재사용 — 안 비우면 다음 요청에 남의 ID 가 붙음
실기동 검증 (prod, MariaDB + Redis):
확인
결과
공개 요청
X-Request-Id: a1892a55
401 응답
X-Request-Id: be88599f — 컨트롤러 전에 끝나도 추적됨
게이트웨이 ID 이어받기
gw-test-42 그대로 유지
404 본문
"traceId":"notfound-77"
로그 검색
해당 ID 로 6줄이 한 요청으로 묶임
OpenTelemetry 는 도입하지 않았습니다. 현재는 단일 서비스라 분산 추적의 이득이 없고, 계측 오버헤드와 콜렉터 운영 비용만 생깁니다. 서비스가 쪼개지는 시점에 이 필터의 헤더 이어받기를 그대로 W3C traceparent 로 바꾸면 됩니다. 테스트 7종으로 고정해 두었습니다.
Activity
FEAT : 요청별 추적 ID 전파 (#50)
DOCS : 요청 추적 방식 기록 (#50)
RosieOh commentedon Aug 10, 2026
구현 완료.
TraceIdFilter.MDC 는 이미 JSON 로그로 나가고 있었지만 traceId 를 넣는 곳이
@LogExecutionTime안뿐이라, 인증 실패나 없는 경로처럼 컨트롤러에 닿기 전에 끝나는 요청에는 아무 값도 없었습니다. 실제로 이번에 500 원인을 찾을 때 타임스탬프로 로그를 뒤져야 했습니다.X-Request-Id이어받기실기동 검증 (prod, MariaDB + Redis):
X-Request-Id: a1892a55X-Request-Id: be88599f— 컨트롤러 전에 끝나도 추적됨gw-test-42그대로 유지"traceId":"notfound-77"OpenTelemetry 는 도입하지 않았습니다. 현재는 단일 서비스라 분산 추적의 이득이 없고, 계측 오버헤드와 콜렉터 운영 비용만 생깁니다. 서비스가 쪼개지는 시점에 이 필터의 헤더 이어받기를 그대로 W3C
traceparent로 바꾸면 됩니다. 테스트 7종으로 고정해 두었습니다.