33 lines
1.1 KiB
Python
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")
|