logging
로깅(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 하면 된다.
파일 로깅
콘솔에 로그를 출력하는 대신, 파일에 로그를 출력하기 위해서는 basicConfig()
에서 파일명을 지정하면 된다. 아래는 mylog.txt
파일에 UTF-8 인코딩을 사용하여 INFO
레벨 이상의 로그를 출력한다.
import logging
logging.basicConfig(filename="mylog.txt", encoding="utf-8", level=logging.INFO)
loggin.info("msg#1")
msg = "msg#2"
logging.info(f"extra info: {msg}")
모듈별 로깅
파이썬을 일반적으로 여러 모듈들을 불러 사용하는데, 각 모듈에서 로깅 기능을 사용하기 위하여, 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()
을 사용한다.
출처: http://pythonstudy.xyz/python/article/517-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%A1%9C%EA%B9%85logging