MCPcopy Create free account
hub / github.com/Tong89/smartNode / _log

Method _log

backend/core.py:529–572  ·  view source on GitHub ↗

统一日志输出方法 - 支持遥测级别控制,并将调度事件发布到 SSE 总线。 Args: message: 日志消息 level: 遥测级别 ("high", "normal", "low"),映射到结构化日志级别 request: 关联的请求对象(可选),其 telemetry_level 用于过滤

(self, message, level="normal", request=None)

Source from the content-addressed store, hash-verified

527 })
528
529 def _log(self, message, level="normal", request=None):
530 """
531 统一日志输出方法 - 支持遥测级别控制,并将调度事件发布到 SSE 总线。
532
533 Args:
534 message: 日志消息
535 level: 遥测级别 ("high", "normal", "low"),映射到结构化日志级别
536 request: 关联的请求对象(可选),其 telemetry_level 用于过滤
537 """
538 # 如果有关联请求,使用请求的遥测级别
539 if request:
540 telemetry_level = request.telemetry_level
541 else:
542 telemetry_level = "normal"
543
544 # 日志级别映射:high > normal > low
545 level_priority = {"high": 3, "normal": 2, "low": 1}
546 telemetry_priority = {"high": 3, "normal": 2, "low": 1}
547
548 # 只输出优先级 <= 遥测级别的日志
549 if level_priority.get(level, 2) <= telemetry_priority.get(telemetry_level, 2):
550 log_level = telemetry_level_to_log_level(level)
551 extra: dict = {"telemetry_level": level}
552 if request is not None:
553 extra["request_id"] = request.id
554 extra["satellite_id"] = getattr(request, "satellite_id", None)
555 _core_logger.log(log_level, message, **extra)
556
557 # 将 high/normal 级别的调度事件发布到 SSE 总线供前端实时订阅
558 if level_priority.get(level, 2) >= level_priority.get("normal", 2):
559 try:
560 from backend.stream import event_bus # lazy import to avoid circular dep
561 event_data = {
562 "message": message,
563 "level": level,
564 "time": self.current_time,
565 }
566 if request is not None:
567 event_data["request_id"] = request.id
568 event_data["request_status"] = getattr(request, "status", None)
569 event_data["satellite_id"] = getattr(request, "satellite_id", None)
570 event_bus.publish("event", event_data)
571 except Exception: # noqa: BLE001
572 pass # never let SSE errors break core simulation logic
573
574 def reseed(self, seed):
575 """重置随机源以进入确定性模式(影响后续地面站抽样/调度/背景任务/轨道生成)。"""

Callers 4

_update_transmissionsMethod · 0.95
submit_requestMethod · 0.95
_start_transmissionMethod · 0.95
reroute_transmissionMethod · 0.80

Calls 3

publishMethod · 0.80
getMethod · 0.45

Tested by

no test coverage detected