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() 을 사용한다.