45

로깅 시스템 구현

로깅+캐싱 시스템 구축 - 주간 프로젝트

학습 목표

@log 데코레이터를 구현한다 제너레이터 기반 LogBuffer를 만든다 log_context 컨텍스트 매니저를 구현한다

Week 1에서 배운 제너레이터, 데코레이터, 컨텍스트 매니저를 종합하여 로깅 시스템을 구현합니다.

구현 순서

  1. LogLevel - IntEnum으로 로그 레벨 정의
  2. LogEntry - dataclass로 로그 엔트리 정의
  3. LogBuffer - 제너레이터로 버퍼 플러시
  4. @log 데코레이터 - ParamSpec으로 시그니처 보존
  5. log_context - 스레드 로컬로 컨텍스트 관리

핵심 포인트

  • 제너레이터: LogBuffer.flush()에서 yield로 메모리 효율적 처리
  • 데코레이터: @log에서 functools.wraps, ParamSpec 사용
  • 컨텍스트 매니저: @contextmanager로 log_context 구현
  • Type Hints: 모든 함수/클래스에 타입 명시
에디터 로딩 중...
정답 보기
에디터 로딩 중...