tracking.py 578 B

123456789101112131415161718192021
  1. import contextvars
  2. import logging
  3. _tracking_id: contextvars.ContextVar[str] = contextvars.ContextVar("tracking_id", default="")
  4. def set_tracking_id(task_id: str) -> contextvars.Token:
  5. return _tracking_id.set(task_id)
  6. def get_tracking_id() -> str:
  7. return _tracking_id.get()
  8. class TrackingFilter(logging.Filter):
  9. """Logging filter that injects the current tracking ID into every log record."""
  10. def filter(self, record: logging.LogRecord) -> bool:
  11. tid = _tracking_id.get()
  12. record.tracking_id = f"[{tid}] " if tid else ""
  13. return True