Naite.t() 개요
간단한 API
두 개의 파라미터직관적인 사용
자동 추적
콜스택 자동 수집호출 경로 파악
Any 타입
모든 값 허용유연한 로깅
테스트 전용
NODE_ENV 체크프로덕션 영향 없음
Naite.t()란?
Naite.t()는 테스트 실행 중 특정 시점의 데이터를 기록하는 함수입니다. 첫 번째 인자로 고유한 키(key)를, 두 번째 인자로 기록할 값(value)을 받습니다.
- 테스트 실행 중 언제든
Naite.get()으로 조회 가능 - VSCode Extension으로 실시간 전송
- 콜스택과 시간 정보와 함께 저장
기본 사용법
단순 로깅
가장 기본적인 사용법은 함수의 입출력을 기록하는 것입니다.단계별 로깅
복잡한 프로세스는 단계별로 로그를 남겨 흐름을 추적합니다.- 어느 단계에서 실패했는지 명확히 파악
- 각 단계의 소요 시간 측정 가능
- wildcard 패턴으로 특정 단계만 필터링 (
order:payment:*)
start/done 패턴: 각 작업의 시작과 완료를
:start/:done으로 기록하면, 나중에 소요 시간을 계산하거나 완료 여부를 확인하기 쉽습니다.내부 동작 이해하기
1. 환경 체크
Naite.t()는 가장 먼저 실행 환경을 체크합니다.
- 프로덕션 코드에
Naite.t()가 있어도 안전 - 테스트 전용 기능
- 런타임 오버헤드 없음
2. Context 확인
Naite는 Sonamu의 Context 시스템을 사용합니다.- 각 테스트마다 독립된
naiteStore제공 - 테스트 격리 보장
- AsyncLocalStorage로 비동기 작업에서도 Context 유지
Context 생성 과정
Context 생성 과정
3. 콜스택 수집
Naite.t() 호출 시점의 콜스택을 자동으로 수집합니다.
- 함수명 (
createUser) - 파일 경로 (
/Users/.../user.model.ts) - 라인 번호 (
123)
콜스택 예시
콜스택 예시
4. Trace 생성 및 저장
수집한 정보로NaiteTrace 객체를 생성하고 Store에 저장합니다.
- 같은 키로 여러 번 호출 가능
- 시간 순서대로 추적
- 반복 작업 로깅 지원
- 단일 호출
- 여러 호출
키 네이밍 전략
계층적 구조
콜론(:)으로 계층을 구분하면 나중에 wildcard 패턴으로 쉽게 조회할 수 있습니다.
- 올바른 방법
- 잘못된 방법
권장 패턴
1
module:function
가장 기본적인 패턴입니다.
2
module:function:action
더 상세한 추적이 필요할 때 사용합니다.
3
module:function:action:detail
매우 복잡한 흐름에서 사용합니다.
실전 패턴
1. 조건부 추적
비즈니스 로직의 분기를 명확히 추적합니다.- A/B 테스트 경로 확인
- 권한 분기 검증
- 에러 핸들링 경로 추적
2. 에러 추적
에러 발생 시 상세 정보를 기록합니다.3. 성능 측정
시간 정보를 기록하여 병목 지점을 파악합니다.4. 반복 작업 추적
루프나 배치 작업에서는 요약 정보만 기록합니다.- 나쁜 예
- 좋은 예
- 조건부 로깅
값 타입과 직렬화
Any 타입 허용
Naite.t()는 any 타입을 받아 모든 JavaScript 값을 기록할 수 있습니다.
- TypeScript 타입 안정성보다 사용 편의성 우선
- 테스트 작성 중 타입 에러로 방해받지 않음
- expect()와 같은 철학
직렬화 경고
VSCode Extension으로 전송하려면 JSON 직렬화가 필요합니다. 직렬화 불가능한 값은 경고가 표시됩니다.- 권장
- 경고
직렬화 경고 메시지
직렬화 경고 메시지
성능 고려사항
1. 테스트 환경만 동작
Naite.t()가 있어도 성능 영향이 전혀 없습니다.
2. 과도한 로깅 주의
권장사항:- 루프 시작/종료만 기록
- 문제 발생 시에만 기록
- 요약 정보 활용
3. 조건부 로깅
디버깅이 필요할 때만 상세 로깅을 활성화합니다.베스트 프랙티스
1
명확한 키 사용
2
일관된 구조
3
최소 정보
4
의미 있는 위치에 로깅
주의사항
다음 단계
로그 조회하기
Naite.get()으로 기록한 로그를 조회하는 방법을 배웁니다.
Naite Viewer
VSCode Extension으로 로그를 시각화하는 방법을 알아봅니다.
테스트 디버깅
콜스택 추적으로 버그를 찾는 방법을 배웁니다.
Naite란?
Naite 전체 개요로 돌아갑니다.