123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- # core/utils/log_codes.py
- """
- 阿里云日志码统一管理
- 采用分层分类的方式管理所有日志码
- """
- from enum import Enum
- from typing import Dict, Any
- class LogCategory(Enum):
- """日志分类"""
- SYSTEM = "系统" # 系统相关日志
- TASK = "任务" # 任务处理日志
- DATA = "数据" # 数据处理日志
- ERROR = "错误" # 错误日志
- MONITOR = "监控" # 监控日志
- class LogCodeManager:
- """日志码管理器"""
- # 系统日志码 (1000-1999)
- SYSTEM_START = ("1000", "系统启动", LogCategory.SYSTEM)
- SYSTEM_SHUTDOWN = ("1001", "系统关闭", LogCategory.SYSTEM)
- SYSTEM_HEALTHY = ("1002", "系统健康检查", LogCategory.SYSTEM)
- # 任务日志码 (2000-2999)
- TASK_RECEIVED = ("2000", "任务接收成功", LogCategory.TASK)
- TASK_START = ("2001", "任务开始执行", LogCategory.TASK)
- TASK_SUCCESS = ("2010", "任务执行成功", LogCategory.TASK)
- TASK_FAILED = ("2011", "任务执行失败", LogCategory.TASK)
- # 数据处理日志码 (3000-3999)
- DATA_PROCESS_START = ("3000", "开始处理数据", LogCategory.DATA)
- DATA_PROCESS_SUCCESS = ("3001", "数据处理成功", LogCategory.DATA)
- DATA_VALIDATION_FAILED = ("3002", "数据验证失败", LogCategory.DATA)
- DATA_TRANSFORM_SUCCESS = ("3003", "数据转换成功", LogCategory.DATA)
- # 错误日志码 (9000-9999)
- ERROR_GENERAL = ("9000", "一般错误", LogCategory.ERROR)
- ERROR_NETWORK = ("9001", "网络错误", LogCategory.ERROR)
- ERROR_DATABASE = ("9002", "数据库错误", LogCategory.ERROR)
- ERROR_CONFIG = ("9003", "配置错误", LogCategory.ERROR)
- # 监控日志码 (1500-1599)
- MONITOR_PROCESS_START = ("1500", "进程启动", LogCategory.MONITOR)
- MONITOR_PROCESS_RESTART = ("1501", "进程重启", LogCategory.MONITOR)
- MONITOR_PROCESS_STOP = ("1502", "进程停止", LogCategory.MONITOR)
- @classmethod
- def get_code_info(cls, code: str) -> Dict[str, Any]:
- """根据code获取日志信息"""
- for attr_name in dir(cls):
- if not attr_name.startswith('_') and attr_name.isupper():
- code_info = getattr(cls, attr_name)
- if isinstance(code_info, tuple) and code_info[0] == code:
- return {
- "code": code_info[0],
- "message": code_info[1],
- "category": code_info[2].value
- }
- return None
- @classmethod
- def get_codes_by_category(cls, category: LogCategory) -> list:
- """根据分类获取所有日志码"""
- codes = []
- for attr_name in dir(cls):
- if not attr_name.startswith('_') and attr_name.isupper():
- code_info = getattr(cls, attr_name)
- if isinstance(code_info, tuple) and code_info[2] == category:
- codes.append({
- "name": attr_name,
- "code": code_info[0],
- "message": code_info[1]
- })
- return codes
- @classmethod
- def validate_code(cls, code: str) -> bool:
- """验证日志码是否存在"""
- return cls.get_code_info(code) is not None
- # 全局实例
- log_codes = LogCodeManager()
|