로그 레벨 설계 및 로테이션: 앱이 DEBUG/INFO/WARNING/ERROR를 사용하는 이유
애플리케이션 로그는 주로 필터링 임계값으로 기능하는 DEBUG, INFO, WARNING, ERROR와 같은 다양한 레이블을 사용합니다. Python의 로깅 모듈은 미세한 세부 정보를 나타내는 DEBUG(10)부터 애플리케이션 실패를 나타내는 CRITICAL(50)까지 다섯 가지 레벨을 정의합니다. 로거의 레벨을 INFO로 설정하면 숫자 값이 20 이상인 메시지만 기록됩니다. 이를 통해 개발자는 정상적인 운영 로그를 어지럽히지 않고 상세한 진단 문구를 포함시킬 수 있으며, 조사 시에만 활성화할 수 있습니다. 예제 애플리케이션인 maintenance_agent.py는 로그 출력을 RotatingFileHandler와 StreamHandler로 라우팅하며, 초기에는 INFO로 설정되어 DEBUG 메시지는 일반적으로 억제됩니다. 애플리케이션의 로그 호출 분포는 진행 상황에 대한 INFO, 복구 가능한 문제에 대한 WARNING, 실제 실패에 대한 ERROR와 같이 설계 가정을 반영합니다. CRITICAL은 애플리케이션이 사이트별 실패를 독립적으로 처리하도록 설계되었기 때문에 사용되지 않습니다. RotatingFileHandler에 의해 구현된 로그 회전은 최대 크기와 백업 수를 설정하여 로그 파일이 무한정 커지는 것을 방지합니다. 이 메커니즘은 과도한 디스크 공간을 소비하지 않고 로그 기록을 보존하도록 합니다. 별도의 핸들러인 _SiteLogCapture는 개별 사이트 유지보수 실행을 위한 임시 로그를 수집하여 보고서나 이메일을 생성한 후 폐기합니다. 이는 여러 핸들러가 장기적인 기록 대 임시적이고 특정 용도와 같이 다른 목적으로 동일한 로그 스트림을 처리할 수 있음을 보여줍니다. 로그 레벨은 세부 정보에 대한 수직 필터 역할을 하며, 핸들러 선택은 대상과 목적에 대한 수평 필터 역할을 합니다.