Files
YG-Rules/app/utils/logger.py

33 lines
1.1 KiB
Python

"""日志配置。"""
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")