import logging import os from datetime import datetime from auto_media_publisher.config.conf_base import LOG_DIR,DEBUG def get_logger(platform, user): logger = logging.getLogger(f"{platform}_{user}") if not logger.handlers: logger.setLevel(logging.DEBUG) # 设置最低级别为 DEBUG,交由 handler 控制输出 date_str = datetime.now().strftime('%Y-%m-%d') base_filename = f"{platform}_{user}_{date_str}" normal_log_file = os.path.join(LOG_DIR, f"{base_filename}.log") error_log_file = os.path.join(LOG_DIR, f"error_{base_filename}.log") # 日志格式 formatter = logging.Formatter('[%(asctime)s] [%(levelname)s] [%(name)s] %(message)s') # 普通日志(INFO 以下,包括 INFO、DEBUG、WARNING) info_handler = logging.FileHandler(normal_log_file, encoding='utf-8') info_handler.setLevel(logging.DEBUG) info_handler.addFilter(lambda record: record.levelno < logging.ERROR) info_handler.setFormatter(formatter) logger.addHandler(info_handler) # 错误日志(ERROR 及以上) error_handler = logging.FileHandler(error_log_file, encoding='utf-8') error_handler.setLevel(logging.ERROR) error_handler.setFormatter(formatter) logger.addHandler(error_handler) # 控制台输出(可选,仅 DEBUG 模式下输出全部) if DEBUG: console_handler = logging.StreamHandler() console_formatter = logging.Formatter('[%(levelname)s] %(message)s') console_handler.setFormatter(console_formatter) console_handler.setLevel(logging.DEBUG) logger.addHandler(console_handler) return logger PLATFORM_LOGGER = get_logger("platform","admin")