피드로 돌아가기
Dev.toBackend
원문 읽기
Rename-free Routing 기반의 무중단 로그 파일 전환 설계
Why I stopped rotating active log files in Python
AI 요약
Context
전통적인 Log Rotation 방식은 활성 파일의 Rename 및 Truncate 과정에서 OS별 파일 핸들 점유 문제로 인한 쓰기 실패 위험을 내포함. 특히 Windows의 파일 잠금 제약과 POSIX의 File Descriptor-Pathname 불일치로 인한 데이터 분산 기록 현상이 주요 병목 지점으로 작용함.
Technical Solution
- 기존의 'Rotate' 모델을 버리고 새로운 목적지 파일을 즉시 생성하는 'Append-only Routing' 아키텍처 채택
- 활성 로그 파일의 이름 변경이나 상태 변경 없이, 라우팅 시점에 다음 대상 파일을 Open 하여 쓰기 경로를 즉각 전환
- stdlib logging과 호환되는 인터페이스를 유지하며 내부적으로 파일 생명주기 관리 로직을 분리한 설계
- 외부 Rotator와의 호환성을 위해
routing_mode="none"및ReopenLogFiles()API를 제공하는 하이브리드 구조 설계 - Multiprocess 환경에서도 파일 핸들 경합 없이 독립적인 쓰기 경로를 확보하는 소유권 모델 확장
실천 포인트
1. 로그 파일 교체 시 Rename 작업이 OS 수준의 File Lock에 의해 블로킹되는지 확인
2. POSIX 환경에서 Rename 후에도 기존 File Descriptor를 통한 쓰기가 계속되는지 검증
3. 서비스 중단 없는 로그 전환이 필요할 경우 파일 변경 대신 새 파일 생성 기반의 Routing 도입 검토
4. 외부 로그 수집기(Collector) 도입 전 local-file boundary의 원자성 확보 여부 체크