observability.py 850 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. Shared observability helpers for data modules.
  5. """
  6. from __future__ import annotations
  7. import logging
  8. from typing import Optional
  9. logger = logging.getLogger(__name__)
  10. def safe_log_tool_call(
  11. tool_logger,
  12. *,
  13. tool_name: str,
  14. success: bool,
  15. retry_count: int = 0,
  16. error_code: Optional[str] = None,
  17. error_message: Optional[str] = None,
  18. chapter: Optional[int] = None,
  19. ) -> None:
  20. try:
  21. tool_logger.log_tool_call(
  22. tool_name,
  23. success,
  24. retry_count=retry_count,
  25. error_code=error_code,
  26. error_message=error_message,
  27. chapter=chapter,
  28. )
  29. except Exception as exc:
  30. logger.warning(
  31. "failed to log tool call %s: %s",
  32. tool_name,
  33. exc,
  34. )