"""日志配置。""" from __future__ import annotations import logging import os from logging.handlers import RotatingFileHandler def setup_logging(app) -> None: os.makedirs(app.config.get("LOG_DIR", "logs"), exist_ok=True) level = getattr(logging, app.config.get("LOG_LEVEL", "INFO"), logging.INFO) app.logger.setLevel(level) log_file = os.path.join(app.config.get("LOG_DIR", "logs"), "app.log") handler = RotatingFileHandler( log_file, maxBytes=app.config.get("LOG_MAX_BYTES", 10 * 1024 * 1024), backupCount=app.config.get("LOG_BACKUP_COUNT", 5), encoding="utf-8", ) handler.setFormatter(logging.Formatter("%(asctime)s %(levelname)s %(name)s %(message)s")) handler.setLevel(level) if not any(isinstance(item, RotatingFileHandler) and item.baseFilename == handler.baseFilename for item in app.logger.handlers): app.logger.addHandler(handler) def get_logger(name: str | None = None) -> logging.Logger: if name: return logging.getLogger(f"app.{name}") return logging.getLogger("app")