카테고리란?
카테고리는 로그의 출처를 계층 구조로 표현합니다. 형식:["a", "b", "c"] 배열
예시:
["fastify"]- Fastify 프레임워크["sonamu", "model", "user-model"]- UserModel 클래스["sonamu", "workflow", "email-send"]- EmailSendWorkflow["app", "payment", "processor"]- 커스텀 카테고리
카테고리 시스템의 목적
카테고리는 로그를 체계적으로 관리하기 위해 필요합니다. 1. 로그 출처 식별계층 구조의 이점
카테고리가 계층적인 이유: 1. 명확한 구조왜 정확한 매칭만 되나?
LogTape는 카테곣리를 정확히 일치하는 것만 매칭합니다.- 명확성
- 성능
- 예측 가능성
카테고리 구조 상세
계층 표현
카테고리는 점점 구체적으로 좁혀집니다.카테고리 매칭
LogTape는 카테고리를 정확히 일치하는 것만 매칭합니다.자동 카테고리 생성
Sonamu는 특정 클래스에 대해 자동으로 카테고리를 생성합니다.Model 클래스
- 클래스 이름에서
ModelClass제거 - PascalCase → snake_case 변환
- snake_case → kebab-case 변환
Frame 클래스
FrameClass 제거
Workflow
- 클래스 이름에서
Workflow제거 (접미사만) - PascalCase → snake_case 변환
- snake_case → kebab-case 변환
Agent 클래스
AgentClass 제거
Naite 카테고리
Naite 테스트 키는 특별한 카테고리 변환 규칙을 따릅니다..로 split- 각 부분을
:로 split - 평탄화 (flatten)
카테고리별 로깅 설정
Model별 로그 분리
타입별 로그 레벨 조정
네임스페이스별 관리
커스텀 카테고리
애플리케이션 코드에서 커스텀 카테고리를 사용할 수 있습니다.실전 예시
개발 환경 상세 로깅
프로덕션 선택적 로깅
도메인별 로그 분리
내부 동작 원리
이 섹션은 Sonamu의 카테고리 시스템이 내부적으로 어떻게 동작하는지 설명합니다. 여기 나오는 함수들은
Sonamu가 자동으로 사용하며, 사용자가 직접 호출할 수 없습니다.
isSameCategory()
두 카테고리가 정확히 일치하는지 확인하는 내부 함수입니다.convertDomainToCategory()
클래스 이름을 카테고리로 변환하는 내부 함수입니다.- 클래스 이름에서 접미사 제거 (
ModelClass,FrameClass,AgentClass,Workflow) - PascalCase → snake_case 변환
- snake*case → kebab-case 변환 (
*→-) ["sonamu", type, name]형식으로 구성
convertNaiteKeyToCategory()
Naite 테스트 키를 카테고리로 변환하는 내부 함수입니다..로 split- 각 부분을
:로 split - 평탄화 (flatten)
주의사항
1. 정확한 매칭만 지원
2. 카테고리는 readonly 배열
3. 클래스 이름 컨벤션
4. Fastify 카테고리 중복
다음 단계
Fastify 로깅
HTTP 요청/응답 로깅을 커스터마이징하세요
Sinks & Filters
커스텀 Sink와 Filter로 로그 출력을 제어하세요
LogTape 설정
기본 로깅 설정과 개념을 학습하세요
LogTape 공식 문서
LogTape의 고급 기능과 API를 확인하세요