feat(observability): add OpenTelemetry process bootstrap

This commit is contained in:
Anish Sarkar 2026-05-21 23:01:54 +05:30
parent 60049936e3
commit eb2e2b253b
7 changed files with 413 additions and 21 deletions

View file

@ -12,9 +12,26 @@ if sys.platform == "win32":
from app.config.uvicorn import load_uvicorn_config
_old_log_record_factory = logging.getLogRecordFactory()
def _otel_safe_log_record_factory(*args, **kwargs):
record = _old_log_record_factory(*args, **kwargs)
if not hasattr(record, "otelTraceID"):
record.otelTraceID = "0"
if not hasattr(record, "otelSpanID"):
record.otelSpanID = "0"
return record
logging.setLogRecordFactory(_otel_safe_log_record_factory)
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
format=(
"%(asctime)s - %(name)s - %(levelname)s - "
"[trace_id=%(otelTraceID)s span_id=%(otelSpanID)s] %(message)s"
),
datefmt="%Y-%m-%d %H:%M:%S",
)