[3.1-3.5] FAM-Edge 全链路 - API-Gateway/Video-Preprocessor/AI-Orchestrator/模型适配器(基类+Ollama+Gemini)/熔断器/JSON解析容错 + 配置
This commit is contained in:
28
fam-edge/src/fam_edge/logger.py
Normal file
28
fam-edge/src/fam_edge/logger.py
Normal file
@@ -0,0 +1,28 @@
|
||||
"""
|
||||
日志工具 - 统一格式,带 task_id 作为 trace_id
|
||||
"""
|
||||
import logging
|
||||
import sys
|
||||
|
||||
|
||||
def setup_logger(name='fam-edge', level=logging.INFO):
|
||||
logger = logging.getLogger(name)
|
||||
if logger.handlers:
|
||||
return logger
|
||||
logger.setLevel(level)
|
||||
handler = logging.StreamHandler(sys.stdout)
|
||||
formatter = logging.Formatter(
|
||||
'%(asctime)s [%(name)s] %(levelname)s %(message)s',
|
||||
datefmt='%Y-%m-%d %H:%M:%S'
|
||||
)
|
||||
handler.setFormatter(formatter)
|
||||
logger.addHandler(handler)
|
||||
return logger
|
||||
|
||||
|
||||
def log_task(logger, task_id, stage, message, level=logging.INFO, duration_ms=None):
|
||||
parts = [f"[task_id={task_id}]", stage]
|
||||
if duration_ms is not None:
|
||||
parts.append(f"done in {duration_ms}ms")
|
||||
parts.append(message)
|
||||
logger.log(level, ' '.join(parts))
|
||||
Reference in New Issue
Block a user