优化日志输出

This commit is contained in:
mark.tian
2025-12-11 16:18:38 +08:00
parent ba3c93c896
commit 06aa1cbc17
3 changed files with 91 additions and 27 deletions

View File

@@ -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")