그냥... 로그 남기고 싶을때 있잖아요... 이게 맞는지 틀린지
그럴때 사용하기 좋은 로그 사용법 간단하게 설명 드리겠습니다.
불러올 모듈은 두개
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 사용하기 정말 편리해요!! 로그 볼때 너무 좋더라구요 추천드립니다. ㅎㅎ