mirror of
https://github.com/basicmachines-co/basic-memory
synced 2026-06-21 13:47:35 +00:00
1b39062ecd
Signed-off-by: phernandez <paul@basicmachines.co> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
65 lines
1.7 KiB
Python
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"]
|