파이썬 logging 라이브러리 setLevel이 잘 안 됩니다
조회수 263회
매 코드 작성 시 logging 라이브러리를 불러와 일일히 값을 정하는 게 귀찮아서 함수형으로 만들었습니다. 근데 레벨을 DEBUG로 했는데 warning 이상부터 메세지가 출력돼서 어디가 잘못된 건지 모르겠습니다. 제 코드에 문제가 있을까요?
import logging
def pr_logger(log_name, stream_lvl, file_lvl):
logger = logging.getLogger(__name__)
# logger.setLevel(eval('logging.{mutual_lvl}'))
formatter = logging.Formatter('[%(levelname)s] [%(asctime)s] [%(message)s]', datefmt='%Y-%m-%d %H:%M:%S')
stream_handler = logging.StreamHandler()
stream_handler.setLevel(eval(f'logging.{stream_lvl}')) # 'DEBUG'
stream_handler.setFormatter(formatter)
file_handler = logging.FileHandler(f'{log_name}.log') # dop
file_handler.setLevel(eval(f'logging.{file_lvl}')) # 'DEBUG'
file_handler.setFormatter(formatter)
logger.addHandler(stream_handler)
logger.addHandler(file_handler)
return logger
a = pr_logger('dop', 'DEBUG', 'DEBUG') # stream, file handler set DEBUG level
a.debug('debug') # msg 출력 x
a.info('info') # msg 출력 x
a.warning('warning') # msg 출력 o
a.error('error') # msg 출력 o
a.critical('critical') # msg 출력 o
>>> [WARNING] [2022-11-13 20:57:55] [warning]
>>> [ERROR] [2022-11-13 20:57:55] [error]
>>> [CRITICAL] [2022-11-13 20:57:55] [critical]
댓글 입력