print와 다른 점은 통제 가능성
logging은 DEBUG·INFO·WARNING·ERROR·CRITICAL 수준, 출력 위치를 정하는 핸들러, 모양을 정하는 포매터를 분리해 코드 변경 없이 무엇을 남길지 고를 수 있어.
라이브러리와 애플리케이션의 책임을 나눠
모듈은 logging.getLogger(__name__)로 자기 logger를 만들고 메시지만 남겨. 수준·형식·파일 같은 설정은 최상위 애플리케이션이 한 번 정하며, 라이브러리는 basicConfig를 호출하지 않아.
운영 로그는 사건의 필드를 남겨
요청 식별자, 대상, 결과, 걸린 시간처럼 원인을 되짚을 값을 기록하고, 예외는 logger.exception으로 traceback과 함께 남겨. 포맷 인자는 지연 평가되는 %s 방식으로 넘겨.