"""项目统一日志工具。""" import logging import os from logging.handlers import RotatingFileHandler def get_project_logger(name: str) -> logging.Logger: """返回统一配置的日志实例,避免重复添加处理器。""" logger = logging.getLogger(name) if logger.handlers: return logger os.makedirs("logs", exist_ok=True) logger.setLevel(logging.INFO) logger.propagate = False formatter = logging.Formatter( "%(asctime)s | %(name)s | %(levelname)s | %(message)s", datefmt="%Y-%m-%d %H:%M:%S", ) file_handler = RotatingFileHandler( "logs/project.log", maxBytes=10 * 1024 * 1024, backupCount=5, encoding="utf-8", ) file_handler.setFormatter(formatter) file_handler.setLevel(logging.INFO) console_handler = logging.StreamHandler() console_handler.setFormatter(formatter) console_handler.setLevel(logging.INFO) logger.addHandler(file_handler) logger.addHandler(console_handler) return logger