import os import logging import logging.handlers from datetime import datetime from framework import path_data from pytz import timezone, utc from support.logger import CustomFormatter level_unset_logger_list = [] logger_list = [] def get_logger(name): logger = logging.getLogger(name) # print(logger.handlers) if not logger.handlers: global level_unset_logger_list global logger_list level = logging.DEBUG from framework import flag_system_loading try: if flag_system_loading: try: pass except Exception: level = logging.DEBUG if level_unset_logger_list is not None: for item in level_unset_logger_list: item.setLevel(level) level_unset_logger_list = None else: level_unset_logger_list.append(logger) except Exception: pass logger.setLevel(level) formatter = logging.Formatter( "[%(asctime)s|%(levelname)s|%(filename)s:%(lineno)s] %(message)s" ) def customTime(*args): utc_dt = utc.localize(datetime.utcnow()) my_tz = timezone("Asia/Seoul") converted = utc_dt.astimezone(my_tz) return converted.timetuple() formatter.converter = customTime file_max_bytes = 1 * 1024 * 1024 fileHandler = logging.handlers.RotatingFileHandler( filename=os.path.join(path_data, "log", "%s.log" % name), maxBytes=file_max_bytes, backupCount=5, encoding="utf8", delay=True, ) streamHandler = logging.StreamHandler() # handler에 fommater 세팅 fileHandler.setFormatter(formatter) streamHandler.setFormatter(CustomFormatter()) # Handler를 logging에 추가 logger.addHandler(fileHandler) logger.addHandler(streamHandler) return logger def set_level(level): global logger_list try: for log in logger_list: log.setLevel(level) except Exception: pass