Skip to content

0.1.7

Choose a tag to compare

@github-actions github-actions released this 24 Oct 17:20
· 46 commits to master since this release
21a9255

로깅 지원 변경 로그

추가

  • Application·요청 실행·확장·내장 확장·서버 어댑터·WebSocket의 주요 단계 로그를 보강했다.
  • 정상 세부 흐름은 DEBUG, 생명주기와 HTTP 전송 결과는 INFO, 연결 단절·프로토콜 위반은 WARNING, 내부·전송·정리 실패는 ERROR로 구분했다.
  • HTTP 전송 결과에 요청 ID·메서드·상태·결과·단조 시계 기반 소요 시간을 기록한다.
  • 로깅 테스트 21개를 추가하고 관련 기존 회귀 테스트를 보강했다.

변경

  • 클래스별 고정 logger와 공통 함수의 모듈 로거를 사용해 DefEssential 하위 계층으로 기록 책임을 정리했다.
  • 라이브러리는 출력 설정을 하지 않고 사용자 로깅 설정과 기본 전파를 유지한다.
  • 샘플의 첫 Application 시작 훅에서 콘솔 출력을 설정한다. 같은 핸들러의 중복 등록을 막고 기존 사용자 핸들러는 유지한다.
  • 샘플 핸들러는 Sample·DefEssential 및 하위 계층만 출력한다. 시간·레벨·로거 이름·메시지와 밀리초·레벨별 색상을 표시한다.
  • Application·일반 요청·스트리밍 샘플의 훅 관찰 로그를 DEBUG로 구분하고 중복 traceback을 제거했다.
  • Python 기본 HTTP 처리기의 헤더 생성 시점 접근 로그를 DEBUG로 분리했다. INFO 전송 요약은 공통 서버 경계에서 한 번 기록한다.

단순화

  • 초기 구현의 단계 로그용 context manager와 자동 단계별 타이머를 제거했다.
  • 라우트·어댑터 전달용 ContextVar와 설정·해제 코드를 제거했다.
  • 별도 로깅 유틸 파일을 삭제하고 각 처리 지점에서 logger와 표준 Python 표현을 직접 사용한다.
  • 공개 훅 계약과 기존 요청·응답 처리 순서를 유지하며 로깅용 공유 상태나 새 설정 API는 추가하지 않았다.

동작 및 사용 주의사항

  • completed는 서버의 전송 처리 종료를 뜻하며 클라이언트 수신 확인을 보장하지 않는다.
  • 응답 생성·훅 완료와 실제 전송 완료를 구분한다. 101 응답은 WebSocket 세션 전체 성공이 아니다.
  • 전송 실패·연결 단절은 성공으로 기록하지 않는다. 응답 시작 후 실패 시 두 번째 오류 응답을 보내지 않는다.
  • 본문 정리 실패는 전송 결과와 별개의 ERROR로 기록한다.
  • 기본 로그 문맥에서 원시 URI·경로·쿼리, 인증정보, 본문, WebSocket payload·close reason을 제외한다. 라우팅 로그는 이스케이프한 등록 라우트만 사용한다.
  • traceback에는 예외 메시지와 소스 줄이 포함될 수 있다. 사용자 예외와 등록 라우트에 민감정보를 넣지 않아야 한다.
  • 시작 훅 이전 로그는 소급 출력하지 않는다. 출처 제한은 샘플 핸들러에만 적용하며 외부 서버 로그와 기존 사용자 핸들러는 별도로 설정한다.

검증

  • 최종 코드 변경 후 전체 회귀: 243개 중 238개 통과, 5개 건너뜀.
  • Windows·Python 3.12에서 작업 트리 소스를 직접 로드해 검증했다.
  • 5개 건너뜀은 Gunicorn/POSIX 환경 제약으로 Linux·WSL 또는 CI에서 추가 검증이 필요하다.
  • Python 3.9 구문 분석과 공백 검사를 통과했다. Python 3.9 실제 런타임 검증은 수행하지 않았다.
  • 위 결과는 앞선 구현 작업의 검증 기록이며 이번 문서 작성 중 테스트를 재실행하지 않았다.

관련 문서