Add OpenTelemetry to your Rust project and configure dependencies for traces, metrics, and logs
OpenTelemetry Rust is distributed as a collection of crates. Install the crates you need based on which telemetry signals (traces, metrics, logs) and exporters you want to use.
By default, opentelemetry and opentelemetry_sdk include all signals (trace, metrics, logs). Use feature flags to reduce compile times and binary size if you only need specific signals.
OpenTelemetry Rust does not provide a new logging API. Use an appender to bridge existing logging libraries to OpenTelemetry.
Add a log appender to route logs to OpenTelemetry:
[dependencies]opentelemetry = { version = "0.31.0", features = ["logs"] }opentelemetry_sdk = { version = "0.31.0", features = ["logs"] }opentelemetry-appender-tracing = "0.31.0"tracing = "0.1"tracing-subscriber = { version = "0.3", features = ["registry", "std"] }
If you’re starting a new project, use the tracing crate. It supports structured logging and is actively maintained. OpenTelemetry itself uses tracing for internal logging.
[dependencies]opentelemetry-otlp = { version = "0.31.0", features = ["http-proto", "experimental-http-retry"] }opentelemetry_sdk = { version = "0.31.0", features = ["rt-tokio"] }tokio = { version = "1.0", features = ["full"] }