open-telemetry / opentelemetry-rust

The Rust OpenTelemetry implementation
https://opentelemetry.io
Apache License 2.0
1.7k stars 384 forks source link

[Bug]: Unable to upgrade to 0.23 with log features #1880

Closed NickLarsenNZ closed 1 week ago

NickLarsenNZ commented 2 weeks ago

What happened?

When upgrading from 0.22 to 0.23, I run into a compilation error about missing implementation. It is related to logging, so it might be dependent on features...

Relevant dependencies

opentelemetry = { version = "0.23.0", features = ["logs"] }
opentelemetry_sdk = { version = "0.23.0", features = ["logs", "rt-tokio"] }
opentelemetry-appender-tracing = "0.4.0"
opentelemetry-jaeger = { version = "0.22.0", features = ["rt-tokio"] }
opentelemetry-otlp = { version = "0.16.0", features = ["gzip-tonic", "logs"] }
opentelemetry-semantic-conventions = "0.15.0"
tracing = "0.1.40"
tracing-opentelemetry = "0.24.0"
tracing-subscriber = { version = "0.3.18", features = ["env-filter"] }

API Version

0.23

SDK Version

0.23

What Exporter(s) are you seeing the problem on?

N/A

Relevant log output

error[E0046]: not all trait items implemented, missing: `event_enabled`
   --> /home/nick/.cargo/registry/src/index.crates.io-6f17d22bba15001f/opentelemetry_sdk-0.23.0/src/logs/log_emitter.rs:239:1
    |
239 | impl opentelemetry::logs::Logger for Logger {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `event_enabled` in implementation
    |
    = help: implement the missing item: `fn event_enabled(&self, _: Severity, _: &str) -> bool { todo!() }`
lalitb commented 1 week ago

Thanks for reporting the issue. The opentelemetry-appender-tracing crate enables the logs_level_enabled feature by default, which in turn enables it for the opentelemetry crate, while it remains disabled in the opentelemetry-sdk crate. This is causing the build error.

You can disable this feature for opentelemetry-appender-tracing if you are not using it:

opentelemetry = { version = "0.23.0", features = ["logs"] }
opentelemetry_sdk = { version = "0.23.0", features = ["logs", "rt-tokio"] }
opentelemetry-appender-tracing = { version = "0.4.0", default-features = false }

Or enable this feature for opentelemetry-sdk if you are using it:

opentelemetry = { version = "0.23.0", features = ["logs"] }
opentelemetry_sdk = { version = "0.23.0", features = ["logs", "rt-tokio", "logs_level_enabled"] }
opentelemetry-appender-tracing = { version = "0.4.0" }

Will fix this in next release.

lalitb commented 1 week ago

Just to add, conditional inclusion of this feature will be removed from subsequent releases, once it is stable in specs - https://github.com/open-telemetry/opentelemetry-specification/blob/v1.34.0/specification/logs/bridge-api.md#enabled

lalitb commented 1 week ago

1885 fixes this.