[Python] log 남기기

봉글렛·2022년 10월 14일
0

python

목록 보기
3/4

그냥... 로그 남기고 싶을때 있잖아요... 이게 맞는지 틀린지
그럴때 사용하기 좋은 로그 사용법 간단하게 설명 드리겠습니다.

불러올 모듈은 두개

import logging
import logging.handlers

파라미터로는 로그남길 file_path 만 설정해주면 되겠네요.
각자 개발하는 환경에 따라 로그를 사용하는 방법도 다양합니다. 저는 주로 스케줄 돌릴때 사용하기때문에 따로 남겨두는 편입니다.

# 로그 설정
def get_logger(logfile,
               logsize=500*1024, logbackup_count=4,
               logger=None, loglevel=logging.DEBUG):
    loglevel = loglevel
    pathlib.Path(logfile).parent.mkdir(parents=True, exist_ok=True)
    if logger is None:
        logger = logging.getLogger(os.path.basename(logfile))
    logger.setLevel(loglevel)
    if logger.handlers is not None and len(logger.handlers) >= 0:
        for handler in logger.handlers:
            logger.removeHandler(handler)
        logger.handlers = []
    loghandler = logging.handlers.RotatingFileHandler(
        logfile,
        maxBytes=logsize, backupCount=logbackup_count,
        encoding='utf8')
    # else:
    #     loghandler = logging.StreamHandler(sys.stdout)
    formatter = logging.Formatter(
        '%(asctime)s-%(name)s-%(levelname)s-'
        '%(filename)s:%(lineno)s-[%(process)d] %(message)s')
    loghandler.setFormatter(formatter)
    logger.addHandler(loghandler)
    return logger

호출할때는 아래처럼 우선 로그 파일의 위치를 지정하고 없으면 생성해야합니다.
info, debug, error를 주로 사용해서 로그를 남기고 있습니다.
이렇게 구분해야 나중에 로그를 볼때 상당히 편리합니다.

log_path = r'C:\study\log\test.log'
if not os.path.exists(os.path.dirname(log_path)):
	os.makedirs(os.path.dirname(log_path))
logger = get_logger(log_path, logsize=1024 * 1024 * 10)
logger.info('>>>>start<<<<')
logger.error('error')
logger.debug('debug')
logger.info('>>>>end<<<<')

로그파일을 읽을때는 BareTail을 사용하는데 Highlighting옵션을 특정단어가 들어간 라인을 색칠해줍니다.

BareTail 사용하기 정말 편리해요!! 로그 볼때 너무 좋더라구요 추천드립니다. ㅎㅎ

profile
어쩌다 개발자 (할 수 있을 때까지!!!!)

0개의 댓글