Files
FastapiAdmin/backend/app/core/logger.py
T
zhangtao ab8e7ac0b7 feat(backend): 添加数据库迁移命令并优化日志配置
- 在 main.py 中添加 revision 和 upgrade 命令,用于生成和应用数据库迁移
- 优化日志配置,确保日志目录存在并添加异常处理
- 更新 README 文件,添加数据库迁移相关说明
- 重构设置文件,将数据库连接信息移至 Settings 类
- 更新数据库连接逻辑,使用新的 DB_URI 属性
2025-03-13 22:44:02 +08:00

75 lines
2.3 KiB
Python

# -*- coding: utf-8 -*-
import logging
from logging.handlers import TimedRotatingFileHandler
from typing import Optional
from app.config.setting import settings
class LoggerHandler:
"""日志处理器类,用于配置和管理日志"""
_instance: Optional['LoggerHandler'] = None
def __new__(cls):
"""单例模式"""
if cls._instance is None:
cls._instance = super().__new__(cls)
return cls._instance
def __init__(self):
if not hasattr(self, 'logger'):
self.logger = logging.getLogger(__name__)
self._configure_logger()
def _configure_logger(self):
"""配置日志处理器"""
try:
# 清除现有处理器
self.logger.handlers.clear()
# 设置日志级别
self.logger.setLevel(settings.LOGGER_LEVEL)
# 创建日志格式器
formatter = logging.Formatter(fmt=settings.LOGGER_FORMAT)
# 确保日志目录存在
settings.LOGGER_FILEPATH.parent.mkdir(parents=True, exist_ok=True)
# 配置文件处理器
file_handler = TimedRotatingFileHandler(
filename=settings.LOGGER_FILEPATH,
when=settings.WHEN,
interval=settings.INTERVAL,
backupCount=settings.BACKUPCOUNT,
encoding=settings.ENCODING
)
file_handler.setLevel(settings.LOGGER_LEVEL)
file_handler.setFormatter(formatter)
self.logger.addHandler(file_handler)
# 配置控制台处理器
console_handler = logging.StreamHandler()
console_handler.setLevel(settings.LOGGER_LEVEL)
console_handler.setFormatter(formatter)
self.logger.addHandler(console_handler)
except Exception as e:
self.logger.error(f"日志配置失败: {e}")
def __enter__(self):
return self.logger
def __exit__(self, exc_type, exc_val, exc_tb):
"""关闭并清理文件处理器"""
for handler in self.logger.handlers[:]:
if isinstance(handler, logging.FileHandler):
handler.close()
self.logger.removeHandler(handler)
return True
# 全局日志实例
logger = LoggerHandler().logger