mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-06-10 22:40:54 +02:00
35 lines
944 B
Python
35 lines
944 B
Python
from typing import Any
|
|
|
|
from posthog import Posthog
|
|
|
|
from ee.onyx.configs.app_configs import POSTHOG_API_KEY
|
|
from ee.onyx.configs.app_configs import POSTHOG_HOST
|
|
from onyx.utils.logger import setup_logger
|
|
|
|
logger = setup_logger()
|
|
|
|
|
|
def posthog_on_error(error: Any, items: Any) -> None:
|
|
"""Log any PostHog delivery errors."""
|
|
logger.error(f"PostHog error: {error}, items: {items}")
|
|
|
|
|
|
posthog = Posthog(
|
|
project_api_key=POSTHOG_API_KEY,
|
|
host=POSTHOG_HOST,
|
|
debug=True,
|
|
on_error=posthog_on_error,
|
|
)
|
|
|
|
|
|
def event_telemetry(
|
|
distinct_id: str, event: str, properties: dict | None = None
|
|
) -> None:
|
|
"""Capture and send an event to PostHog, flushing immediately."""
|
|
logger.info(f"Capturing PostHog event: {distinct_id} {event} {properties}")
|
|
try:
|
|
posthog.capture(distinct_id, event, properties)
|
|
posthog.flush()
|
|
except Exception as e:
|
|
logger.error(f"Error capturing PostHog event: {e}")
|