본문 바로가기

Program

Python logging 사용하기

반응형

Python logging 사용하기

python으로 개발하면서 로그를 남기고 저장하기위한 기본 모듈인 logging에 대한 설명이다.

 

logging 모듈을 사용하는 방법은 아래와 같다.

debug, info, warning, error, critical 5단계로 로그를 구분하여 등록 할 수 있다.

import logging


logging.debug("test debug log")
logging.info("info log")
logging.warning("warring !!!!")
logging.error("bug bug bug bug")
logging.critical("critical !! ~~")

위 코드를 실행하면 warning, error, critical 에 해당하는 로그만 출력된다.

이유는 기본설정이 warning 이상의 로그만 출력되도록 설정되어있다.

 

모든 로그가 출력되도록 하려면

import logging 아래 다음 코드를 넣어준다.

logging.basicConfig(level=logging.DEBUG) #기본값은 warning (warning 이상의 로그만 출력됨)

이제 코드를 실행하면 입력한 모든 로그가 콘솔에 출력된다.

 

 

로그를 콘솔에 출력하지 않고 파일에 저장하려면 아래와 같이 filename 정보를 넣어주면 된다.

logging.basicConfig(filename='./test.log', level=logging.DEBUG) #기본값은 warning (warning 이상의 로그만 출력됨)

 

 

이렇게 로그를 저장하게 되면 하나의 파일에 용량이 커지게되고, 나중에 파일 용량이 너무 커서 열지 못하는 문제가 발생 할 수 있다.

이런 문제를 해결하기위해 RotatingFileHandler를 사용하여 로그저장파일의 크기가 커지면 다른파일에 등록하도록 할 수 있다.

import logging
from logging.handlers import RotatingFileHandler


logger = logging.getLogger(__name__)
fileHandler = RotatingFileHandler('./myLogger.log', maxBytes=1024*5, backupCount=5)
fileHandler.setFormatter(logging.Formatter('%(asctime)s [%(levelname)s] [%(filename)s:%(lineno)s] >> %(message)s'))
logger.addHandler(fileHandler)
logger.setLevel(logging.DEBUG)



logger.debug("test debug log")
logger.info("info log")
logger.warning("warring !!!!")
logger.error("bug bug bug bug")
logger.critical("critical !! ~~")

전체 코드는 위와 같고

 

중요한 부분은 아래와 같다.

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

maxByte = 해당 용량이상이 되면 해당파일을 백업하고 새로운 파일에 로그를 저장한다.

backupCount = 백업된 파일을 몇개 유지할것인지 설정한다. (5로 설정되면 5개의 백업파일을 유지한다.)

반응형