OpenTelemetry Integration¶
ultilog provides optional OpenTelemetry integration for traces, logs, and metrics when the otel extra is installed.
Install¶
pip install "ultilog[otel]"
Traces¶
Configure a TracerProvider with sensible defaults:
from ultilog.otel.traces import configure_otel_traces
provider = configure_otel_traces(service_name="my-api")
With an OTLP endpoint:
provider = configure_otel_traces(
service_name="my-api",
endpoint="http://localhost:4317",
)
When no endpoint is specified, traces are exported to the console for local development.
Logs¶
Forward stdlib log records to the OTel log pipeline:
from ultilog.otel.logs import configure_otel_logs
provider = configure_otel_logs(service_name="my-api")
This installs an OTel LoggingHandler on the root logger (or a named logger):
configure_otel_logs(
service_name="my-api",
logger_name="my.app",
endpoint="http://localhost:4317",
)
Metrics¶
Configure a MeterProvider:
from ultilog.otel.metrics import configure_otel_metrics
provider = configure_otel_metrics(service_name="my-api")
All-in-one setup¶
Configure multiple signals at once using OTelSettings:
from ultilog.otel.exporters import configure_exporters
from ultilog.models.otel import OTelSettings
providers = configure_exporters(OTelSettings(
enabled=True,
service_name="my-api",
endpoint="http://localhost:4317",
traces_enabled=True,
logs_enabled=True,
metrics_enabled=True,
))
Trace/log correlation¶
The TraceCorrelationFilter adds trace_id and span_id to log records when an active OTel span exists:
from ultilog.otel.correlation import TraceCorrelationFilter
handler.addFilter(TraceCorrelationFilter())
# Log records now have trace_id and span_id attributes
Context propagation¶
Set up W3C TraceContext and Baggage propagation:
from ultilog.otel.propagation import configure_otel_propagation
configure_otel_propagation()
Availability check¶
from ultilog.otel.availability import otel_available
if otel_available():
configure_otel_traces(service_name="my-api")
Settings¶
| Setting | Default | Description |
|---|---|---|
enabled |
False |
Activate OTel integration |
service_name |
"ultilog-app" |
Service name for resources |
endpoint |
None |
OTLP endpoint (console fallback) |
traces_enabled |
False |
Enable trace export |
metrics_enabled |
False |
Enable metric export |
logs_enabled |
False |
Enable log export |
inject_trace_ids |
True |
Add trace/span IDs to log records |