From 58515ebec06f50e66002043ea9d51fa10175d8e1 Mon Sep 17 00:00:00 2001 From: Aaron Nelson Date: Thu, 30 Apr 2026 17:36:19 +0000 Subject: [PATCH] graphiti_service.py: add traceback logging, log file handler for all endpoints --- scripts/graphiti_service.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/scripts/graphiti_service.py b/scripts/graphiti_service.py index 7e85a1f..6154eaf 100644 --- a/scripts/graphiti_service.py +++ b/scripts/graphiti_service.py @@ -4,7 +4,7 @@ Wraps graphiti-core in a FastAPI service to avoid asyncio event loop conflicts. Port 8001 (internal only). No OpenAI dependency. """ -import os, logging, sys +import os, logging, sys, traceback from contextlib import asynccontextmanager from datetime import datetime from pathlib import Path @@ -15,7 +15,14 @@ from pydantic import BaseModel load_dotenv(Path.home() / "aaronai" / ".env") -logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s") +logging.basicConfig( + level=logging.INFO, + format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", + handlers=[ + logging.FileHandler("/var/log/aaronai/graphiti-sidecar.log"), + logging.StreamHandler(), + ] +) log = logging.getLogger("graphiti-sidecar") GROUP_ID = os.getenv("GRAPHITI_GROUP_ID", "aaron") @@ -116,7 +123,7 @@ async def add_episode(req: EpisodeRequest): ) return {"ok": True} except Exception as e: - log.error(f"Episode ingestion failed: {e}") + log.error(f"Episode ingestion failed: {e}\n{traceback.format_exc()}") raise HTTPException(status_code=500, detail=str(e)) @app.post("/episodes/bulk") @@ -142,7 +149,7 @@ async def add_episodes_bulk(req: BulkEpisodeRequest): ) return {"ok": True, "count": len(raw_episodes)} except Exception as e: - log.error(f"Bulk ingestion failed: {e}") + log.error(f"Bulk ingestion failed: {e}\n{traceback.format_exc()}") raise HTTPException(status_code=500, detail=str(e)) @@ -168,7 +175,7 @@ async def search(query: str, limit: int = 8, group_id: str | None = None): ] } except Exception as e: - log.error(f"Search failed: {e}") + log.error(f"Search failed: {e}\n{traceback.format_exc()}") raise HTTPException(status_code=500, detail=str(e)) if __name__ == "__main__":