파이썬 로깅(logging)

1. 파이썬 로깅(logging)

파이썬에서 로그를 남기기 위해서 표준 라이브러리에 내장된 logging 모듈을 사용할 수 있다. logging 모듈은 debug(), info(), warning(), error(), critical() 등의 메서드를 사용하여 각 레벨별로 필요한 로그를 남길 수 있다. logging 모듈에서 어떤 레벨 이상의 로그만 출력하도록 하기 위해 레벨(level)을 지정할 수 있으며, 디폴트로 WARNING 레벨을 사용한다.

import logging;
# logging.basicConfig(level=logging.DEBUG)
logging.debug("log debug")
logging.info("log info")
logging.warning("log warning")
logging.error("log error")
logging.critical("log critical")

위 예제를 실행하면 debug, info 메시지는 출력되지 않고 warning, error, critical 메시지만 출력되는데, 이는 디폴트로 로깅 레벨이 WARNING 레벨이기 때문이다. 만약 모든 레벨의 메시지를 콘솔에 출력하려면, 두번째 라인에 있는 logging.basicConfig(level=logging.DEBUG)을 Uncomment 하면 된다.

2. 파일 로깅

콘솔에 로그를 출력하는 대신, 파일에 로그를 출력하기 위해서는, basicConfig() 에서 파일명을 지정하면 된다. 아래는 mylog.txt 파일에 UTF-8 인코딩을 사용하여 INFO 레벨 이상의 로그를 출력한다.

import logging;

logging.basicConfig(filename="mylog.txt", encoding="utf-8", level=logging.INFO)
logging.info("msg#1")
msg = "msg#2" 
logging.info("extra info: %s", msg)

3. 모듈별 로깅

파이썬은 일반적으로 여러 모듈들을 불러 사용하는데, 각 모듈에서 로깅 기능을 사용하기 위하여, logging.getLogger() 을 사용한다. getLogger() 메서드는 파라미터로 로그명을 받아들이는데, 일반적으로 해당 모듈의 이름을 전달하여 이를 위해 __name__ 을 사용한다.

import logging;

mylogger = logging.getLogger(__name__)
#mylogger.setLevel(level=logging.WARNING)
mylogger.info("mylogger info")
mylogger.critical("mylogger critical")

만약 각 모듈에서 특정 로깅 Level을 정하고 싶으면, 위의 2번째 라인에서처럼 setLevel() 을 사용한다.

Python 프로그래밍 실습

본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.