2026.7.29日志输出修改

This commit is contained in:
2026-07-31 11:19:37 +08:00
parent 2b98cd5449
commit 47ef5c5373
2 changed files with 19 additions and 9 deletions
+6 -6
View File
@@ -242,11 +242,7 @@ class MissionManager:
if self.state not in (MissionState.INIT, MissionState.FINISHED): if self.state not in (MissionState.INIT, MissionState.FINISHED):
if state is not None: if state is not None:
if not self.proxy.is_state_fresh(state): if not self.proxy.is_state_fresh(state):
age_us, _ = self.proxy.get_state_freshness(state) # 过期警告已由 is_state_fresh 内部输出,此处不重复打印
age_s = (age_us or 0) / 1_000_000
self._throttle_log("stale_state", 5.0,
"⚠️ STATE 严重过期 (age=%.2fs),"
"本轮保守跳过", age_s, level=logging.WARNING)
return return
else: else:
logger.warning("⚠️ 尚未收到 STATE,跳过本轮处理") logger.warning("⚠️ 尚未收到 STATE,跳过本轮处理")
@@ -267,7 +263,11 @@ class MissionManager:
mode = state["drone"].get("mode", "") mode = state["drone"].get("mode", "")
# 飞控切到 AUTO.LAND 或 AUTO.RTL → 自动让渡控制权 # 飞控切到 AUTO.LAND 或 AUTO.RTL → 自动让渡控制权
if mode in ("AUTO.LAND", "AUTO.RTL"): if mode in ("AUTO.LAND", "AUTO.RTL"):
logger.warning(f"⚠️ 飞控切换到 {mode},Python 端主动让渡控制权") # 去重:同一 mode 只在首次出现时打印,避免每帧刷屏
self._throttle_log_on_change(
"yield_mode", mode,
"⚠️ 飞控切换到 %s,Python 端主动让渡控制权", mode,
level=logging.WARNING)
# 根据模式决定切换到的状态 # 根据模式决定切换到的状态
if mode == "AUTO.LAND": if mode == "AUTO.LAND":
self.state = MissionState.LANDING self.state = MissionState.LANDING
+13 -3
View File
@@ -113,6 +113,9 @@ class RouterProxy:
self._last_stale_warn_time = 0.0 # 上次 "STATE 过期" 日志时间 self._last_stale_warn_time = 0.0 # 上次 "STATE 过期" 日志时间
self._last_severe_warn_time = 0.0 # 上次 "STATE 严重过期" 日志时间 self._last_severe_warn_time = 0.0 # 上次 "STATE 严重过期" 日志时间
# ---- 日志节流:PX4_ACK 按 (cmd, result) 去重 ----
self._last_ack_log_time = {} # {(cmd, result): 上次打印时间}
# ================================================================ # ================================================================
# 内部工具 # 内部工具
# ================================================================ # ================================================================
@@ -354,7 +357,8 @@ class RouterProxy:
# 日志节流:间隔 ≥ THROTTLE_INTERVAL 秒才打印一次 # 日志节流:间隔 ≥ THROTTLE_INTERVAL 秒才打印一次
now = time.time() now = time.time()
if age_us >= self.STALE_THRESHOLD_WARN_US: if age_us >= self.STALE_THRESHOLD_WARN_US:
if now - self._last_severe_warn_time >= 5.0: # 严重过期(长时断流)30 秒提示一次即可,避免持续刷屏
if now - self._last_severe_warn_time >= 30.0:
self._last_severe_warn_time = now self._last_severe_warn_time = now
logger.warning("STATE 严重过期: age=%.2fs(阈值=%.0fms)", logger.warning("STATE 严重过期: age=%.2fs(阈值=%.0fms)",
age_us / 1e6, stale_threshold_us / 1000) age_us / 1e6, stale_threshold_us / 1000)
@@ -469,8 +473,14 @@ class RouterProxy:
logger.error("ALERT 回调异常: %s", e) logger.error("ALERT 回调异常: %s", e)
elif msg_type == "PX4_ACK": elif msg_type == "PX4_ACK":
logger.info("PX4_ACK: cmd=%s result=%s", # 节流:相同 (cmd, result) 30 秒内只打印一次,新组合立即可见
data.get("ref_cmd"), data.get("result")) ack_key = (data.get("ref_cmd"), data.get("result"))
now = time.time()
last = self._last_ack_log_time.get(ack_key, 0)
if now - last >= 30.0:
self._last_ack_log_time[ack_key] = now
logger.info("PX4_ACK: cmd=%s result=%s",
data.get("ref_cmd"), data.get("result"))
elif msg_type == "QGC_WAYPOINTS": elif msg_type == "QGC_WAYPOINTS":
logger.info("📥 收到 QGC_WAYPOINTS: count=%d", data.get("count", 0)) logger.info("📥 收到 QGC_WAYPOINTS: count=%d", data.get("count", 0))