优化日志输出
This commit is contained in:
@@ -115,30 +115,73 @@ celery_tasks_logger = get_logger("celery_tasks")
|
||||
callback_service_logger = get_logger("callback_service")
|
||||
redis_logger = get_logger("redis")
|
||||
|
||||
# 通用文件日志器设置函数
|
||||
def setup_celery_file_logger(logger_name: str, log_file: str, level: str = "INFO"):
|
||||
"""为Celery组件设置专用的文件日志器,同时保持控制台输出"""
|
||||
# 创建日志目录
|
||||
log_dir = Path(log_file).parent
|
||||
log_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
# 获取日志器
|
||||
logger = get_logger(logger_name)
|
||||
logger.setLevel(getattr(logging, level.upper()))
|
||||
|
||||
# 清除现有文件处理器(避免重复添加)
|
||||
for handler in logger.handlers[:]:
|
||||
if isinstance(handler, logging.handlers.TimedRotatingFileHandler):
|
||||
logger.removeHandler(handler)
|
||||
|
||||
# 创建文件处理器
|
||||
file_handler = logging.handlers.TimedRotatingFileHandler(
|
||||
filename=log_file,
|
||||
when='midnight',
|
||||
interval=1,
|
||||
backupCount=7,
|
||||
encoding='utf-8',
|
||||
)
|
||||
file_handler.suffix = "%Y%m%d"
|
||||
file_handler.setLevel(getattr(logging, level.upper()))
|
||||
|
||||
# 格式化器
|
||||
formatter = logging.Formatter(
|
||||
fmt='%(asctime)s - %(name)s - %(levelname)s - [%(filename)s:%(lineno)d] - %(message)s',
|
||||
datefmt='%Y-%m-%d %H:%M:%S'
|
||||
)
|
||||
file_handler.setFormatter(formatter)
|
||||
|
||||
# 添加文件处理器
|
||||
logger.addHandler(file_handler)
|
||||
logger.propagate = True
|
||||
|
||||
return logger
|
||||
|
||||
# 各模块专用日志器映射
|
||||
CELERY_LOGGERS = {
|
||||
"celery_tasks": ("logs/celery_tasks.log", "INFO"),
|
||||
"celery": ("logs/celery_app.log", "INFO"),
|
||||
"celery.beat": ("logs/celery_beat.log", "WARNING"),
|
||||
"celery.worker": ("logs/celery_worker.log", "WARNING"),
|
||||
}
|
||||
|
||||
# 初始化所有Celery文件日志器
|
||||
_celery_file_loggers = {}
|
||||
for logger_name, (log_file, level) in CELERY_LOGGERS.items():
|
||||
_celery_file_loggers[logger_name] = setup_celery_file_logger(logger_name, log_file, level)
|
||||
|
||||
# 向后兼容的默认日志器
|
||||
logger = app_logger
|
||||
|
||||
# 便捷获取各模块日志器的函数
|
||||
def get_main_logger():
|
||||
"""获取main模块日志器"""
|
||||
return main_logger
|
||||
# 通用获取器函数
|
||||
def get_celery_file_logger(logger_name: str):
|
||||
"""获取指定名称的Celery文件日志器"""
|
||||
return _celery_file_loggers.get(logger_name, get_logger(logger_name))
|
||||
|
||||
def get_routes_logger():
|
||||
"""获取routes模块日志器"""
|
||||
return routes_logger
|
||||
|
||||
def get_celery_logger():
|
||||
"""获取celery模块日志器"""
|
||||
return celery_logger
|
||||
|
||||
def get_celery_tasks_logger():
|
||||
"""获取celery_tasks模块日志器"""
|
||||
return celery_tasks_logger
|
||||
|
||||
def get_callback_service_logger():
|
||||
"""获取callback_service模块日志器"""
|
||||
return callback_service_logger
|
||||
|
||||
def get_redis_logger():
|
||||
"""获取redis模块日志器"""
|
||||
return redis_logger
|
||||
# 简化的便捷函数
|
||||
def get_main_logger(): return main_logger
|
||||
def get_routes_logger(): return routes_logger
|
||||
def get_celery_logger(): return get_celery_file_logger("celery")
|
||||
def get_celery_tasks_logger(): return get_celery_file_logger("celery_tasks")
|
||||
def get_callback_service_logger(): return callback_service_logger
|
||||
def get_redis_logger(): return redis_logger
|
||||
def get_celery_beat_logger(): return get_celery_file_logger("celery.beat")
|
||||
def get_celery_worker_logger(): return get_celery_file_logger("celery.worker")
|
||||
Reference in New Issue
Block a user