From 48e71626c7f53af50f6b61b31a6c6f33a97a76f8 Mon Sep 17 00:00:00 2001 From: Alexazhu Date: Sat, 18 Apr 2026 15:31:45 +0800 Subject: [PATCH] fix(homeassistant): preserve exception tracebacks in error/warning logs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three `logger.error` / `logger.warning` calls inside `except Exception as e:` blocks log only the exception's string. When the Home Assistant WebSocket connect, read loop, or reconnect fails in production, logs show the error message but drop the traceback — making it hard to tell whether a transport bug, an auth issue, or a library regression is the cause. Add `exc_info=True` to the connect, WS-read error, and reconnect sites. --- gateway/platforms/homeassistant.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gateway/platforms/homeassistant.py b/gateway/platforms/homeassistant.py index 746465594c..0ce904ebce 100644 --- a/gateway/platforms/homeassistant.py +++ b/gateway/platforms/homeassistant.py @@ -134,7 +134,7 @@ class HomeAssistantAdapter(BasePlatformAdapter): return True except Exception as e: - logger.error("[%s] Failed to connect: %s", self.name, e) + logger.error("[%s] Failed to connect: %s", self.name, e, exc_info=True) return False async def _ws_connect(self) -> bool: @@ -224,7 +224,7 @@ class HomeAssistantAdapter(BasePlatformAdapter): except asyncio.CancelledError: return except Exception as e: - logger.warning("[%s] WebSocket error: %s", self.name, e) + logger.warning("[%s] WebSocket error: %s", self.name, e, exc_info=True) if not self._running: return @@ -242,7 +242,7 @@ class HomeAssistantAdapter(BasePlatformAdapter): backoff_idx = 0 # Reset on successful reconnect logger.info("[%s] Reconnected", self.name) except Exception as e: - logger.warning("[%s] Reconnection failed: %s", self.name, e) + logger.warning("[%s] Reconnection failed: %s", self.name, e, exc_info=True) async def _read_events(self) -> None: """Read events from WebSocket until disconnected."""