import os import logging from logging.handlers import TimedRotatingFileHandler # =============================== # 基本配置 # =============================== LOG_DIR = os.path.join(os.path.dirname(__file__), "../../logs") os.makedirs(LOG_DIR, exist_ok=True) LOG_FILE = os.path.join(LOG_DIR, "app.log") # =============================== # 日志格式 # =============================== LOG_FORMAT = "[%(asctime)s] [%(levelname)s] [%(name)s] [%(filename)s:%(lineno)d] - %(message)s" DATE_FORMAT = "%Y-%m-%d %H:%M:%S" # =============================== # 主 logger 实例 # =============================== logger = logging.getLogger("app") logger.setLevel(logging.INFO) # 可改为 DEBUG # 防止重复添加 handler if not logger.handlers: # 控制台输出 console_handler = logging.StreamHandler() console_handler.setLevel(logging.INFO) console_handler.setFormatter(logging.Formatter(LOG_FORMAT, DATE_FORMAT)) # 文件输出(每天切割) file_handler = TimedRotatingFileHandler( LOG_FILE, when="midnight", interval=1, backupCount=7, encoding="utf-8" ) file_handler.setLevel(logging.INFO) file_handler.setFormatter(logging.Formatter(LOG_FORMAT, DATE_FORMAT)) # 添加到 logger logger.addHandler(console_handler) logger.addHandler(file_handler) # 避免重复日志 logger.propagate = False