Created
October 2, 2024 15:59
-
-
Save alessandrobologna/2308038d8c67f443ba3c44c0e1efc694 to your computer and use it in GitHub Desktop.
rust otel 0.26.0 tracing opentelemetry
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Compiling otel26 v0.1.0 (/Users/abologna/git/rust/otel26) | |
| error[E0277]: the trait bound `opentelemetry_sdk::trace::Tracer: opentelemetry::trace::tracer::Tracer` is not satisfied | |
| --> src/main.rs:15:64 | |
| | | |
| 15 | let telemetry = tracing_opentelemetry::layer().with_tracer(tracer); | |
| | ----------- ^^^^^^ the trait `opentelemetry::trace::tracer::Tracer` is not implemented for `opentelemetry_sdk::trace::Tracer` | |
| | | | |
| | required by a bound introduced by this call | |
| | | |
| = help: the following other types implement trait `opentelemetry::trace::tracer::Tracer`: | |
| opentelemetry::global::trace::BoxedTracer | |
| opentelemetry::trace::noop::NoopTracer | |
| opentelemetry_sdk::trace::tracer::Tracer | |
| note: required by a bound in `OpenTelemetryLayer::<S, T>::with_tracer` | |
| --> /Users/abologna/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tracing-opentelemetry-0.26.0/src/layer.rs:591:17 | |
| | | |
| 589 | pub fn with_tracer<Tracer>(self, tracer: Tracer) -> OpenTelemetryLayer<S, Tracer> | |
| | ----------- required by a bound in this associated function | |
| 590 | where | |
| 591 | Tracer: otel::Tracer + PreSampledTracer + 'static, | |
| | ^^^^^^^^^^^^ required by this bound in `OpenTelemetryLayer::<S, T>::with_tracer` | |
| error[E0277]: the trait bound `opentelemetry_sdk::trace::Tracer: PreSampledTracer` is not satisfied | |
| --> src/main.rs:15:64 | |
| | | |
| 15 | let telemetry = tracing_opentelemetry::layer().with_tracer(tracer); | |
| | ----------- ^^^^^^ the trait `PreSampledTracer` is not implemented for `opentelemetry_sdk::trace::Tracer` | |
| | | | |
| | required by a bound introduced by this call | |
| | | |
| = help: the following other types implement trait `PreSampledTracer`: | |
| opentelemetry::trace::noop::NoopTracer | |
| opentelemetry_sdk::trace::tracer::Tracer | |
| note: required by a bound in `OpenTelemetryLayer::<S, T>::with_tracer` | |
| --> /Users/abologna/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tracing-opentelemetry-0.26.0/src/layer.rs:591:32 | |
| | | |
| 589 | pub fn with_tracer<Tracer>(self, tracer: Tracer) -> OpenTelemetryLayer<S, Tracer> | |
| | ----------- required by a bound in this associated function | |
| 590 | where | |
| 591 | Tracer: otel::Tracer + PreSampledTracer + 'static, | |
| | ^^^^^^^^^^^^^^^^ required by this bound in `OpenTelemetryLayer::<S, T>::with_tracer` | |
| error[E0277]: the trait bound `opentelemetry_sdk::trace::Tracer: opentelemetry::trace::tracer::Tracer` is not satisfied | |
| --> src/main.rs:19:47 | |
| | | |
| 19 | let subscriber = Registry::default().with(telemetry); | |
| | ---- ^^^^^^^^^ the trait `opentelemetry::trace::tracer::Tracer` is not implemented for `opentelemetry_sdk::trace::Tracer`, which is required by `OpenTelemetryLayer<_, opentelemetry_sdk::trace::Tracer>: __tracing_subscriber_Layer<Registry>` | |
| | | | |
| | required by a bound introduced by this call | |
| | | |
| = help: the following other types implement trait `opentelemetry::trace::tracer::Tracer`: | |
| opentelemetry::global::trace::BoxedTracer | |
| opentelemetry::trace::noop::NoopTracer | |
| opentelemetry_sdk::trace::tracer::Tracer | |
| = note: required for `OpenTelemetryLayer<Registry, opentelemetry_sdk::trace::Tracer>` to implement `__tracing_subscriber_Layer<Registry>` | |
| note: required by a bound in `with` | |
| --> /Users/abologna/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tracing-subscriber-0.3.18/src/layer/mod.rs:1503:12 | |
| | | |
| 1501 | fn with<L>(self, layer: L) -> Layered<L, Self> | |
| | ---- required by a bound in this associated function | |
| 1502 | where | |
| 1503 | L: Layer<Self>, | |
| | ^^^^^^^^^^^ required by this bound in `__tracing_subscriber_SubscriberExt::with` | |
| error[E0277]: the trait bound `opentelemetry_sdk::trace::Tracer: PreSampledTracer` is not satisfied | |
| --> src/main.rs:19:47 | |
| | | |
| 19 | let subscriber = Registry::default().with(telemetry); | |
| | ---- ^^^^^^^^^ the trait `PreSampledTracer` is not implemented for `opentelemetry_sdk::trace::Tracer`, which is required by `OpenTelemetryLayer<_, opentelemetry_sdk::trace::Tracer>: __tracing_subscriber_Layer<Registry>` | |
| | | | |
| | required by a bound introduced by this call | |
| | | |
| = help: the following other types implement trait `PreSampledTracer`: | |
| opentelemetry::trace::noop::NoopTracer | |
| opentelemetry_sdk::trace::tracer::Tracer | |
| = note: required for `OpenTelemetryLayer<Registry, opentelemetry_sdk::trace::Tracer>` to implement `__tracing_subscriber_Layer<Registry>` | |
| note: required by a bound in `with` | |
| --> /Users/abologna/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tracing-subscriber-0.3.18/src/layer/mod.rs:1503:12 | |
| | | |
| 1501 | fn with<L>(self, layer: L) -> Layered<L, Self> | |
| | ---- required by a bound in this associated function | |
| 1502 | where | |
| 1503 | L: Layer<Self>, | |
| | ^^^^^^^^^^^ required by this bound in `__tracing_subscriber_SubscriberExt::with` | |
| error[E0277]: the trait bound `opentelemetry_sdk::trace::Tracer: opentelemetry::trace::tracer::Tracer` is not satisfied | |
| --> src/main.rs:22:39 | |
| | | |
| 22 | tracing::subscriber::with_default(subscriber, || { | |
| | --------------------------------- ^^^^^^^^^^ the trait `opentelemetry::trace::tracer::Tracer` is not implemented for `opentelemetry_sdk::trace::Tracer`, which is required by `Layered<OpenTelemetryLayer<Registry, opentelemetry_sdk::trace::Tracer>, Registry>: tracing::Subscriber` | |
| | | | |
| | required by a bound introduced by this call | |
| | | |
| = help: the following other types implement trait `opentelemetry::trace::tracer::Tracer`: | |
| opentelemetry::global::trace::BoxedTracer | |
| opentelemetry::trace::noop::NoopTracer | |
| opentelemetry_sdk::trace::tracer::Tracer | |
| = note: required for `OpenTelemetryLayer<Registry, opentelemetry_sdk::trace::Tracer>` to implement `__tracing_subscriber_Layer<Registry>` | |
| = note: required for `Layered<OpenTelemetryLayer<Registry, opentelemetry_sdk::trace::Tracer>, Registry>` to implement `tracing::Subscriber` | |
| note: required by a bound in `tracing::subscriber::with_default` | |
| --> /Users/abologna/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tracing-0.1.40/src/subscriber.rs:22:8 | |
| | | |
| 20 | pub fn with_default<T, S>(subscriber: S, f: impl FnOnce() -> T) -> T | |
| | ------------ required by a bound in this function | |
| 21 | where | |
| 22 | S: Subscriber + Send + Sync + 'static, | |
| | ^^^^^^^^^^ required by this bound in `with_default` | |
| error[E0277]: the trait bound `opentelemetry_sdk::trace::Tracer: PreSampledTracer` is not satisfied | |
| --> src/main.rs:22:39 | |
| | | |
| 22 | tracing::subscriber::with_default(subscriber, || { | |
| | --------------------------------- ^^^^^^^^^^ the trait `PreSampledTracer` is not implemented for `opentelemetry_sdk::trace::Tracer`, which is required by `Layered<OpenTelemetryLayer<Registry, opentelemetry_sdk::trace::Tracer>, Registry>: tracing::Subscriber` | |
| | | | |
| | required by a bound introduced by this call | |
| | | |
| = help: the following other types implement trait `PreSampledTracer`: | |
| opentelemetry::trace::noop::NoopTracer | |
| opentelemetry_sdk::trace::tracer::Tracer | |
| = note: required for `OpenTelemetryLayer<Registry, opentelemetry_sdk::trace::Tracer>` to implement `__tracing_subscriber_Layer<Registry>` | |
| = note: required for `Layered<OpenTelemetryLayer<Registry, opentelemetry_sdk::trace::Tracer>, Registry>` to implement `tracing::Subscriber` | |
| note: required by a bound in `tracing::subscriber::with_default` | |
| --> /Users/abologna/.cargo/registry/src/index.crates.io-6f17d22bba15001f/tracing-0.1.40/src/subscriber.rs:22:8 | |
| | | |
| 20 | pub fn with_default<T, S>(subscriber: S, f: impl FnOnce() -> T) -> T | |
| | ------------ required by a bound in this function | |
| 21 | where | |
| 22 | S: Subscriber + Send + Sync + 'static, | |
| | ^^^^^^^^^^ required by this bound in `with_default` | |
| warning: unused import: `Tracer` | |
| --> src/main.rs:3:32 | |
| | | |
| 3 | use opentelemetry::trace::{Tracer, TracerProvider as _}; | |
| | ^^^^^^ | |
| | | |
| = note: `#[warn(unused_imports)]` on by default | |
| For more information about this error, try `rustc --explain E0277`. | |
| warning: `otel26` (bin "otel26") generated 1 warning | |
| error: could not compile `otel26` (bin "otel26") due to 6 previous errors; 1 warning emitted |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| [package] | |
| name = "otel26" | |
| version = "0.1.0" | |
| edition = "2021" | |
| [dependencies] | |
| opentelemetry = "0.26.0" | |
| opentelemetry-stdout = "0.26.0" | |
| opentelemetry_sdk = { version = "0.26.0", features = ["trace"] } | |
| tracing = "0.1.40" | |
| tracing-opentelemetry = "0.26.0" | |
| tracing-subscriber = "0.3.18" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| fn main() { | |
| use opentelemetry_sdk::trace::TracerProvider; | |
| use opentelemetry::trace::{Tracer, TracerProvider as _}; | |
| use tracing::{error, span}; | |
| use tracing_subscriber::layer::SubscriberExt; | |
| use tracing_subscriber::Registry; | |
| // Create a new OpenTelemetry trace pipeline that prints to stdout | |
| let provider = TracerProvider::builder() | |
| .with_simple_exporter(opentelemetry_stdout::SpanExporter::default()) | |
| .build(); | |
| let tracer = provider.tracer("readme_example"); | |
| // Create a tracing layer with the configured tracer | |
| let telemetry = tracing_opentelemetry::layer().with_tracer(tracer); | |
| // Use the tracing subscriber `Registry`, or any other subscriber | |
| // that impls `LookupSpan` | |
| let subscriber = Registry::default().with(telemetry); | |
| // Trace executed code | |
| tracing::subscriber::with_default(subscriber, || { | |
| // Spans will be sent to the configured OpenTelemetry exporter | |
| let root = span!(tracing::Level::TRACE, "app_start", work_units = 2); | |
| let _enter = root.enter(); | |
| error!("This event will be logged in the root span."); | |
| }); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment