WEBBOOK CHAPTER

NestJS 11, 시작부터 런칭까지: 37장. 예외·로그·Trace를 한 사건 번호로 잇는다

37장. 예외·로그·Trace를 한 사건 번호로 잇는다

Middleware가 correlation id를 검증·생성하고 response header, logger context, trace, outbox envelope에 전달한다. 로그 공통 필드는 timestamp, level, service, environment, deployment, route template, result code, duration이다. raw URL query, body, JWT, cookie, 주소, 전화는 기본 제외한다. 사용자가 넣은 newline과 긴 id로 log를 오염시키지 못하게 제한한다.

Exception Filter는 domain error를 안정적인 Problem Details로 변환하고 unexpected error는 500과 correlation id만 반환한다. stack은 접근 통제된 server log에 남기되 serializer가 request 객체 전체를 붙이지 않게 한다. queue worker와 WebSocket에도 같은 error taxonomy를 쓴다.

trace는 HTTP→transaction→outbox publisher→queue→consumer→WebSocket notification을 잇는다. sampling으로 오류 trace를 놓치지 않되 개인정보 attribute를 넣지 않는다. 장애 실습에서 화면 correlation id 하나로 Dispatch row, event id, provider receipt를 찾아야 한다.