본문 바로가기
Python

Python logging 모듈 사용법

by pnnote 2023. 5. 27.
반응형

로그(log)는 프로그램의 실행 상태, 오류 메시지, 경고 등을 기록하여 문제 해결, 디버깅, 성능 분석 등 여러가지 목적으로 활용할 수 있습니다. 대부분의 상용 프로그램은 이런 로그 기능이 많이 들어가있습니다.

python에서는 로그를 남기는 것을 지원해주는 logging 모듈이 있습니다. logging 모듈은 별도로 설치하지 않아도 import 할 수 있습니다. logging 모듈을 사용해서 로그 파일을 남기는 방법을 알아보겠습니다.

 

import logging

log_name = 'myLog'

# 지정한 log name으로 logger 객체 생성
logger = logging.getLogger(log_name)

# log level 설정
logger.setLevel(logging.INFO)

# 로그를 남길때 text 포맷 설정
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# FileHandler를 설정합니다. 해당 경로로 로그 파일이 생성됩니다.
fileHandler = logging.FileHandler('./info.log')
fileHandler.setFormatter(formatter)
logger.addHandler(fileHandler)

# 로그를 남깁니다.
logger.info('log info')
logger.warning("log warning")
logger.error("log error")
logger.critical("log ciritical")

 위 코드를 실행할 경우 info.log 파일에 로그가 남는 것을 확인할 수 있습니다. python 코드를 작성하면서 로그를 남기고 싶을때에 각 레벨에 맞는 로그 기록 함수를 사용하면 됩니다.

logger.info("Test info")
logger.warning("Test warning")
logger.error("Test error")
logger.critical("Test ciritical")
logger.debug("Test debug")

그러면 다음과 같이 로그가 남는 것을 확인할 수 있습니다. 현재는 단순한 로그를 남겼지만 여기에 입력데이터, 수행시간, 에러메시지, 프로그램 실행결과 같은 중요한 정보를 남길 수 있습니다.

프로그램을 사용하다보면 로그가 아주 방대하게 쌓이게 됩니다. 시간이 지난 로그는 필요없게되어 용량만 차지하고 있는 경우가 있습니다. 그런 경우 OS단에서 로그 파일을 처리할 수도 있지만 logging 모듈에는 일정량 이상 로그가 쌓일 경우 처리해주는 RotatingFileHandler 를 지원합니다. 위 코드에서 FileHandler부분만 바꿔주면 됩니다.

 

from logging.handlers import RotatingFileHandler

fileHandler = RotatingFileHandler('./log.log', maxBytes=1024*1024*5, backupCount=3)

여기서 maxBytes는 로그파일의 최대크기이고, backupCount는 백업할 로그 파일 개수입니다. 이렇게해서 로그가 무한정 쌓이는걸 방지할 수 있습니다.

반응형