feat: Add detailed log handling options for Cognee exceptions [COG-1983] (#782)
<!-- .github/pull_request_template.md --> ## Description Add log handling options for cognee exceptions ## DCO Affirmation I affirm that all code in every commit of this pull request conforms to the terms of the Topoteretes Developer Certificate of Origin.
This commit is contained in:
parent
c4915a4136
commit
773752a4be
4 changed files with 20 additions and 6 deletions
|
|
@ -12,13 +12,22 @@ class CogneeApiError(Exception):
|
|||
message: str = "Service is unavailable.",
|
||||
name: str = "Cognee",
|
||||
status_code=status.HTTP_418_IM_A_TEAPOT,
|
||||
log=True,
|
||||
log_level="ERROR",
|
||||
):
|
||||
self.message = message
|
||||
self.name = name
|
||||
self.status_code = status_code
|
||||
|
||||
# Automatically log the exception details
|
||||
logger.error(f"{self.name}: {self.message} (Status code: {self.status_code})")
|
||||
if log and (log_level == "ERROR"):
|
||||
logger.error(f"{self.name}: {self.message} (Status code: {self.status_code})")
|
||||
elif log and (log_level == "WARNING"):
|
||||
logger.warning(f"{self.name}: {self.message} (Status code: {self.status_code})")
|
||||
elif log and (log_level == "INFO"):
|
||||
logger.info(f"{self.name}: {self.message} (Status code: {self.status_code})")
|
||||
elif log and (log_level == "DEBUG"):
|
||||
logger.debug(f"{self.name}: {self.message} (Status code: {self.status_code})")
|
||||
|
||||
super().__init__(self.message, self.name)
|
||||
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ def record_graph_changes(func):
|
|||
session.add(relationship)
|
||||
await session.flush()
|
||||
except Exception as e:
|
||||
logger.error(f"Error adding relationship: {e}")
|
||||
logger.debug(f"Error adding relationship: {e}")
|
||||
await session.rollback()
|
||||
continue
|
||||
|
||||
|
|
@ -78,14 +78,14 @@ def record_graph_changes(func):
|
|||
session.add(relationship)
|
||||
await session.flush()
|
||||
except Exception as e:
|
||||
logger.error(f"Error adding relationship: {e}")
|
||||
logger.debug(f"Error adding relationship: {e}")
|
||||
await session.rollback()
|
||||
continue
|
||||
|
||||
try:
|
||||
await session.commit()
|
||||
except Exception as e:
|
||||
logger.error(f"Error committing session: {e}")
|
||||
logger.debug(f"Error committing session: {e}")
|
||||
|
||||
return result
|
||||
|
||||
|
|
|
|||
|
|
@ -8,5 +8,7 @@ class CollectionNotFoundError(CriticalError):
|
|||
message,
|
||||
name: str = "CollectionNotFoundError",
|
||||
status_code: int = status.HTTP_422_UNPROCESSABLE_ENTITY,
|
||||
log=True,
|
||||
log_level="ERROR",
|
||||
):
|
||||
super().__init__(message, name, status_code)
|
||||
super().__init__(message, name, status_code, log, log_level)
|
||||
|
|
|
|||
|
|
@ -184,7 +184,9 @@ class PGVectorAdapter(SQLAlchemyAdapter, VectorDBInterface):
|
|||
if collection_name in metadata.tables:
|
||||
return metadata.tables[collection_name]
|
||||
else:
|
||||
raise CollectionNotFoundError(f"Collection '{collection_name}' not found!")
|
||||
raise CollectionNotFoundError(
|
||||
f"Collection '{collection_name}' not found!", log_level="DEBUG"
|
||||
)
|
||||
|
||||
async def retrieve(self, collection_name: str, data_point_ids: List[str]):
|
||||
# Get PGVectorDataPoint Table from database
|
||||
|
|
@ -266,6 +268,7 @@ class PGVectorAdapter(SQLAlchemyAdapter, VectorDBInterface):
|
|||
# Get PGVectorDataPoint Table from database
|
||||
PGVectorDataPoint = await self.get_table(collection_name)
|
||||
|
||||
# NOTE: This needs to be initialized in case search doesn't return a value
|
||||
closest_items = []
|
||||
|
||||
# Use async session to connect to the database
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue