Python으로 개발하다 보면 서드파티 라이브러리나 임포트한 모듈이 콘솔에 불필요한 로그 메시지를 대량으로 출력해서 정작 중요한 내용을 확인하기 어려운 경우가 있습니다. 이럴 때는 표준 logging 모듈을 활용해 특정 모듈의 로거를 제어할 수 있습니다.
로거의 로그 레벨 조정하기
가장 간단한 방법은 해당 모듈의 로거를 가져와서 로그 레벨을 원하는 수준으로 설정하는 것입니다. 예를 들어, WARNING 이상의 심각도를 가진 메시지만 출력되도록 하려면 다음과 같이 작성합니다.
import logging
logging.getLogger("imported_module").setLevel(logging.WARNING)모듈 이름을 문자열로 직접 입력하고 싶지 않다면, 이미 임포트된 모듈 객체의 __name__ 속성을 활용할 수 있습니다.
import imported_module import logging logging.getLogger(imported_module.__name__).setLevel(logging.WARNING)
더 엄격하게 로그 필터링하기
오류나 치명적인 문제만 기록하고 싶다면 logging.WARNING 대신 더 높은 레벨을 지정하면 됩니다.
- ERROR: 오류 메시지만 출력
- CRITICAL: 가장 심각한 치명적 오류만 출력
logging.getLogger("imported_module").setLevel(logging.ERROR)
# 또는
logging.getLogger("imported_module").setLevel(logging.CRITICAL)로깅 완전히 비활성화하기
해당 모듈의 로그를 아예 끄고 싶다면 두 가지 방법을 추가로 사용할 수 있습니다.
# 방법 1: 로거 자체를 비활성화
logging.getLogger("imported_module").disabled = True
# 방법 2: 상위 로거로의 전파(propagation) 차단
logging.getLogger("imported_module").propagate = FalsesetLevel()은 지정한 레벨 미만의 메시지만 걸러내는 반면, disabled = True는 해당 로거의 모든 출력을 완전히 차단합니다. 상황에 맞게 적절한 방법을 선택해 사용하면 됩니다.