Files
Paul Hernandez 1b39062ecd refactor(core): rip telemetry wrappers, use logfire directly (#754)
Signed-off-by: phernandez <paul@basicmachines.co>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 13:58:19 -05:00

65 lines
1.7 KiB
Python

"""Logfire telemetry bootstrap.
`configure_telemetry()` wires up the Logfire SDK and returns the loguru
handler. Call sites use `logfire.span(...)` and `logfire.metric_counter(...)`
directly — there are no wrappers here.
"""
from __future__ import annotations
from typing import Any
import logfire
REPOSITORY_URL = "https://github.com/basicmachines-co/basic-memory"
ROOT_PATH = "src/basic_memory"
_LOGFIRE_HANDLER: dict[str, Any] | None = None
def configure_telemetry(
service_name: str,
*,
environment: str,
service_version: str | None = None,
enable_logfire: bool = False,
send_to_logfire: bool = False,
log_level: str = "INFO",
) -> bool:
"""Configure Logfire for the current process. Returns True when enabled."""
global _LOGFIRE_HANDLER
_LOGFIRE_HANDLER = None
if not enable_logfire:
return False
kwargs: dict[str, Any] = {
"service_name": service_name,
"environment": environment,
"code_source": logfire.CodeSource(
repository=REPOSITORY_URL,
revision=service_version or "",
root_path=ROOT_PATH,
),
"min_level": log_level.lower(),
"send_to_logfire": send_to_logfire,
}
try:
logfire.configure(**kwargs)
except TypeError:
# Older logfire releases don't accept send_to_logfire as a keyword.
kwargs.pop("send_to_logfire", None)
logfire.configure(**kwargs)
_LOGFIRE_HANDLER = logfire.loguru_handler()
return True
def get_logfire_handler() -> dict[str, Any] | None:
"""Return the active Logfire loguru handler, if any."""
return _LOGFIRE_HANDLER
__all__ = ["configure_telemetry", "get_logfire_handler"]