From 13161050b05a217ed8fa0bd2c713acdaeba89a96 Mon Sep 17 00:00:00 2001 From: Cijo Thomas Date: Wed, 2 Jul 2025 08:38:00 -0700 Subject: [PATCH 1/2] Remove ff --- opentelemetry-appender-log/CHANGELOG.md | 2 ++ opentelemetry-appender-log/Cargo.toml | 2 -- opentelemetry-appender-log/src/lib.rs | 11 ++--------- opentelemetry-appender-tracing/CHANGELOG.md | 2 ++ opentelemetry-appender-tracing/Cargo.toml | 2 -- opentelemetry-appender-tracing/src/layer.rs | 3 --- opentelemetry-appender-tracing/src/lib.rs | 1 - opentelemetry-sdk/CHANGELOG.md | 1 + opentelemetry-sdk/Cargo.toml | 3 +-- opentelemetry-sdk/benches/log_enabled.rs | 2 +- opentelemetry-sdk/src/lib.rs | 2 -- .../src/logs/concurrent_log_processor.rs | 1 - opentelemetry-sdk/src/logs/export.rs | 2 -- opentelemetry-sdk/src/logs/log_processor.rs | 2 -- opentelemetry-sdk/src/logs/logger.rs | 2 -- opentelemetry-sdk/src/logs/simple_log_processor.rs | 1 - opentelemetry-stdout/Cargo.toml | 2 +- opentelemetry/CHANGELOG.md | 1 + opentelemetry/Cargo.toml | 3 +-- opentelemetry/src/lib.rs | 3 --- opentelemetry/src/logs/logger.rs | 3 --- opentelemetry/src/logs/noop.rs | 1 - scripts/lint.sh | 2 +- stress/Cargo.toml | 6 +++--- 24 files changed, 16 insertions(+), 44 deletions(-) diff --git a/opentelemetry-appender-log/CHANGELOG.md b/opentelemetry-appender-log/CHANGELOG.md index 5c629ff6c5..0a77ff3271 100644 --- a/opentelemetry-appender-log/CHANGELOG.md +++ b/opentelemetry-appender-log/CHANGELOG.md @@ -2,6 +2,8 @@ ## vNext +- **Breaking** Remove `spec_unstable_logs_enabled` feature flag - logger.enabled functionality is now always available. + ## 0.30.0 Released 2025-May-23 diff --git a/opentelemetry-appender-log/Cargo.toml b/opentelemetry-appender-log/Cargo.toml index 25ace0a787..0a295b2574 100644 --- a/opentelemetry-appender-log/Cargo.toml +++ b/opentelemetry-appender-log/Cargo.toml @@ -25,14 +25,12 @@ opentelemetry-semantic-conventions = { version = "0.30", path = "../opentelemetr ] } [features] -spec_unstable_logs_enabled = ["opentelemetry/spec_unstable_logs_enabled"] with-serde = ["log/kv_serde", "serde"] experimental_metadata_attributes = ["dep:opentelemetry-semantic-conventions"] [dev-dependencies] opentelemetry_sdk = { path = "../opentelemetry-sdk", features = [ "testing", - "spec_unstable_logs_enabled", ] } opentelemetry-stdout = { workspace = true, features = ["logs"] } log = { workspace = true, features = ["kv_serde"] } diff --git a/opentelemetry-appender-log/src/lib.rs b/opentelemetry-appender-log/src/lib.rs index 7584a25d73..3ab3587285 100644 --- a/opentelemetry-appender-log/src/lib.rs +++ b/opentelemetry-appender-log/src/lib.rs @@ -91,7 +91,6 @@ //! //! This library provides the following Cargo features: //! -//! - `spec_unstable_logs_enabled`: Allow users to control the log level. //! - `with-serde`: Support complex values as attributes without stringifying them. //! //! [Logs Bridge API]: https://opentelemetry.io/docs/specs/otel/logs/bridge-api/ @@ -135,14 +134,11 @@ where L: Logger + Send + Sync, { fn enabled(&self, _metadata: &Metadata) -> bool { - #[cfg(feature = "spec_unstable_logs_enabled")] - return self.logger.event_enabled( + self.logger.event_enabled( severity_of_level(_metadata.level()), _metadata.target(), None, - ); - #[cfg(not(feature = "spec_unstable_logs_enabled"))] - true + ) } fn log(&self, record: &Record) { @@ -791,9 +787,6 @@ mod tests { // As a result of using `with_simple_exporter` while building the logger provider, // the processor used is a `SimpleLogProcessor` which has an implementation of `event_enabled` // that always returns true. - #[cfg(feature = "spec_unstable_logs_enabled")] - assert!(otel_log_appender.enabled(&log::Metadata::builder().build())); - #[cfg(not(feature = "spec_unstable_logs_enabled"))] assert!(otel_log_appender.enabled(&log::Metadata::builder().build())); } diff --git a/opentelemetry-appender-tracing/CHANGELOG.md b/opentelemetry-appender-tracing/CHANGELOG.md index 1a1df995d5..ad4540189d 100644 --- a/opentelemetry-appender-tracing/CHANGELOG.md +++ b/opentelemetry-appender-tracing/CHANGELOG.md @@ -2,6 +2,8 @@ ## vNext +- **Breaking** Remove `spec_unstable_logs_enabled` feature flag - logger.enabled functionality is now always available. + ## 0.30.1 Released 2025-June-05 diff --git a/opentelemetry-appender-tracing/Cargo.toml b/opentelemetry-appender-tracing/Cargo.toml index bbf753c002..59a4bb6c83 100644 --- a/opentelemetry-appender-tracing/Cargo.toml +++ b/opentelemetry-appender-tracing/Cargo.toml @@ -36,14 +36,12 @@ pprof = { version = "0.14", features = ["flamegraph", "criterion"] } [features] default = [] experimental_metadata_attributes = ["dep:tracing-log"] -spec_unstable_logs_enabled = ["opentelemetry/spec_unstable_logs_enabled"] experimental_use_tracing_span_context = ["tracing-opentelemetry"] [[bench]] name = "logs" harness = false -required-features = ["spec_unstable_logs_enabled"] [[bench]] name = "log-attributes" diff --git a/opentelemetry-appender-tracing/src/layer.rs b/opentelemetry-appender-tracing/src/layer.rs index c02aca04a4..23df6593aa 100644 --- a/opentelemetry-appender-tracing/src/layer.rs +++ b/opentelemetry-appender-tracing/src/layer.rs @@ -220,7 +220,6 @@ where let severity = severity_of_level(metadata.level()); let target = metadata.target(); let name = metadata.name(); - #[cfg(feature = "spec_unstable_logs_enabled")] if !self.logger.event_enabled(severity, target, Some(name)) { // TODO: See if we need internal logs or track the count. return; @@ -916,7 +915,6 @@ mod tests { // no-op } - #[cfg(feature = "spec_unstable_logs_enabled")] fn event_enabled(&self, level: Severity, target: &str, name: Option<&str>) -> bool { // assert that passed in arguments are same as the ones set in the test. assert_eq!(self.severity_level, level); @@ -933,7 +931,6 @@ mod tests { } } - #[cfg(feature = "spec_unstable_logs_enabled")] #[test] fn is_enabled() { // Arrange diff --git a/opentelemetry-appender-tracing/src/lib.rs b/opentelemetry-appender-tracing/src/lib.rs index c868d508a4..2a0f9625de 100644 --- a/opentelemetry-appender-tracing/src/lib.rs +++ b/opentelemetry-appender-tracing/src/lib.rs @@ -135,7 +135,6 @@ //! > spans to OpenTelemetry in the future. //! //! ## Feature Flags -//! `spec_unstable_logs_enabled`: TODO //! //! `experimental_metadata_attributes`: TODO //! diff --git a/opentelemetry-sdk/CHANGELOG.md b/opentelemetry-sdk/CHANGELOG.md index c0ca5cd22d..bad3efeca0 100644 --- a/opentelemetry-sdk/CHANGELOG.md +++ b/opentelemetry-sdk/CHANGELOG.md @@ -4,6 +4,7 @@ - TODO: Placeholder for Span processor related things - *Fix* SpanProcessor::on_start is no longer called on non recording spans +- **Breaking** Remove `spec_unstable_logs_enabled` feature flag - logger.enabled functionality is now always available. ## 0.30.0 diff --git a/opentelemetry-sdk/Cargo.toml b/opentelemetry-sdk/Cargo.toml index aa92787ea7..3f5428328b 100644 --- a/opentelemetry-sdk/Cargo.toml +++ b/opentelemetry-sdk/Cargo.toml @@ -43,7 +43,6 @@ default = ["trace", "metrics", "logs", "internal-logs"] trace = ["opentelemetry/trace", "rand", "percent-encoding"] jaeger_remote_sampler = ["trace", "opentelemetry-http", "http", "serde", "serde_json", "url", "experimental_async_runtime"] logs = ["opentelemetry/logs", "serde_json"] -spec_unstable_logs_enabled = ["logs", "opentelemetry/spec_unstable_logs_enabled"] metrics = ["opentelemetry/metrics"] testing = ["opentelemetry/testing", "trace", "metrics", "logs", "rt-tokio", "rt-tokio-current-thread", "tokio/macros", "tokio/rt-multi-thread"] experimental_async_runtime = [] @@ -92,7 +91,7 @@ harness = false [[bench]] name = "log_enabled" harness = false -required-features = ["spec_unstable_logs_enabled", "experimental_logs_concurrent_log_processor"] +required-features = ["experimental_logs_concurrent_log_processor"] [[bench]] name = "tracer_creation" diff --git a/opentelemetry-sdk/benches/log_enabled.rs b/opentelemetry-sdk/benches/log_enabled.rs index 164dccf0b3..66349d277a 100644 --- a/opentelemetry-sdk/benches/log_enabled.rs +++ b/opentelemetry-sdk/benches/log_enabled.rs @@ -9,7 +9,7 @@ | exporter_disabled_simple_processor | 5.3 ns | */ -// cargo bench --bench log_enabled --features="spec_unstable_logs_enabled,experimental_logs_concurrent_log_processor" +// cargo bench --bench log_enabled --features="experimental_logs_concurrent_log_processor" use criterion::{criterion_group, criterion_main, Criterion}; use opentelemetry::logs::{Logger, LoggerProvider}; diff --git a/opentelemetry-sdk/src/lib.rs b/opentelemetry-sdk/src/lib.rs index 8ee470b828..30fcc7f810 100644 --- a/opentelemetry-sdk/src/lib.rs +++ b/opentelemetry-sdk/src/lib.rs @@ -86,8 +86,6 @@ //! //! For `logs` the following feature flags are available: //! -//! * `spec_unstable_logs_enabled`: control the log level -//! //! Support for recording and exporting telemetry asynchronously and perform //! metrics aggregation can be added via the following flags: //! diff --git a/opentelemetry-sdk/src/logs/concurrent_log_processor.rs b/opentelemetry-sdk/src/logs/concurrent_log_processor.rs index 052e3d9796..640323cd52 100644 --- a/opentelemetry-sdk/src/logs/concurrent_log_processor.rs +++ b/opentelemetry-sdk/src/logs/concurrent_log_processor.rs @@ -48,7 +48,6 @@ impl LogProcessor for SimpleConcurrentLogProcessor { self.exporter.shutdown_with_timeout(timeout) } - #[cfg(feature = "spec_unstable_logs_enabled")] #[inline] fn event_enabled( &self, diff --git a/opentelemetry-sdk/src/logs/export.rs b/opentelemetry-sdk/src/logs/export.rs index af0653d50c..8f2ce4d477 100644 --- a/opentelemetry-sdk/src/logs/export.rs +++ b/opentelemetry-sdk/src/logs/export.rs @@ -2,7 +2,6 @@ use crate::error::OTelSdkResult; use crate::logs::SdkLogRecord; use crate::Resource; -#[cfg(feature = "spec_unstable_logs_enabled")] use opentelemetry::logs::Severity; use opentelemetry::InstrumentationScope; use std::fmt::Debug; @@ -143,7 +142,6 @@ pub trait LogExporter: Send + Sync + Debug { fn shutdown(&self) -> OTelSdkResult { self.shutdown_with_timeout(time::Duration::from_secs(5)) } - #[cfg(feature = "spec_unstable_logs_enabled")] /// Check if logs are enabled. fn event_enabled(&self, _level: Severity, _target: &str, _name: Option<&str>) -> bool { // By default, all logs are enabled diff --git a/opentelemetry-sdk/src/logs/log_processor.rs b/opentelemetry-sdk/src/logs/log_processor.rs index 3f7fa62975..16dd696494 100644 --- a/opentelemetry-sdk/src/logs/log_processor.rs +++ b/opentelemetry-sdk/src/logs/log_processor.rs @@ -29,7 +29,6 @@ use crate::error::OTelSdkResult; use crate::{logs::SdkLogRecord, Resource}; -#[cfg(feature = "spec_unstable_logs_enabled")] use opentelemetry::logs::Severity; use opentelemetry::InstrumentationScope; @@ -64,7 +63,6 @@ pub trait LogProcessor: Send + Sync + Debug { fn shutdown(&self) -> OTelSdkResult { self.shutdown_with_timeout(Duration::from_secs(5)) } - #[cfg(feature = "spec_unstable_logs_enabled")] /// Check if logging is enabled fn event_enabled(&self, _level: Severity, _target: &str, _name: Option<&str>) -> bool { // By default, all logs are enabled diff --git a/opentelemetry-sdk/src/logs/logger.rs b/opentelemetry-sdk/src/logs/logger.rs index f76a43792f..f21dbc6b93 100644 --- a/opentelemetry-sdk/src/logs/logger.rs +++ b/opentelemetry-sdk/src/logs/logger.rs @@ -1,7 +1,6 @@ use super::{SdkLogRecord, SdkLoggerProvider, TraceContext}; use opentelemetry::{trace::TraceContextExt, Context, InstrumentationScope}; -#[cfg(feature = "spec_unstable_logs_enabled")] use opentelemetry::logs::Severity; use opentelemetry::time::now; @@ -52,7 +51,6 @@ impl opentelemetry::logs::Logger for SdkLogger { } } - #[cfg(feature = "spec_unstable_logs_enabled")] #[inline] fn event_enabled(&self, level: Severity, target: &str, name: Option<&str>) -> bool { if Context::is_current_telemetry_suppressed() { diff --git a/opentelemetry-sdk/src/logs/simple_log_processor.rs b/opentelemetry-sdk/src/logs/simple_log_processor.rs index a52bd548d8..d18ffadb75 100644 --- a/opentelemetry-sdk/src/logs/simple_log_processor.rs +++ b/opentelemetry-sdk/src/logs/simple_log_processor.rs @@ -134,7 +134,6 @@ impl LogProcessor for SimpleLogProcessor { } } - #[cfg(feature = "spec_unstable_logs_enabled")] #[inline] fn event_enabled( &self, diff --git a/opentelemetry-stdout/Cargo.toml b/opentelemetry-stdout/Cargo.toml index 305bd0eb51..9b2014972a 100644 --- a/opentelemetry-stdout/Cargo.toml +++ b/opentelemetry-stdout/Cargo.toml @@ -24,7 +24,7 @@ rustdoc-args = ["--cfg", "docsrs"] default = ["trace", "metrics", "logs"] trace = ["opentelemetry/trace", "opentelemetry_sdk/trace"] metrics = ["opentelemetry/metrics", "opentelemetry_sdk/metrics"] -logs = ["opentelemetry/logs", "opentelemetry_sdk/logs", "opentelemetry_sdk/spec_unstable_logs_enabled"] +logs = ["opentelemetry/logs", "opentelemetry_sdk/logs"] [dependencies] chrono = { workspace = true, features = ["now"] } diff --git a/opentelemetry/CHANGELOG.md b/opentelemetry/CHANGELOG.md index e5aca778da..0bec299806 100644 --- a/opentelemetry/CHANGELOG.md +++ b/opentelemetry/CHANGELOG.md @@ -3,6 +3,7 @@ ## vNext - Add `get_all` method to `opentelemetry::propagation::Extractor` to return all values of the given propagation key and provide a default implementation. +- **Breaking** Remove `spec_unstable_logs_enabled` feature flag - logger.enabled functionality is now always available. ## 0.30.0 diff --git a/opentelemetry/Cargo.toml b/opentelemetry/Cargo.toml index 49994d0280..493485f8c3 100644 --- a/opentelemetry/Cargo.toml +++ b/opentelemetry/Cargo.toml @@ -38,11 +38,10 @@ trace = ["futures", "thiserror"] metrics = [] testing = ["trace"] logs = [] -spec_unstable_logs_enabled = ["logs"] internal-logs = ["tracing"] [dev-dependencies] -opentelemetry_sdk = { path = "../opentelemetry-sdk", features = ["spec_unstable_logs_enabled"]} # for documentation tests +opentelemetry_sdk = { path = "../opentelemetry-sdk"} # for documentation tests criterion = { workspace = true } rand = { workspace = true, features = ["os_rng", "thread_rng"] } tokio = { version = "1.0", features = ["full"] } diff --git a/opentelemetry/src/lib.rs b/opentelemetry/src/lib.rs index ebed7960ea..d08e087445 100644 --- a/opentelemetry/src/lib.rs +++ b/opentelemetry/src/lib.rs @@ -163,9 +163,6 @@ //! //! The default feature flags are ["trace", "metrics", "logs", "internal-logs"]. //! -//! The following feature flags provides additional configuration for `logs`: -//! * `spec_unstable_logs_enabled`: Allow users to control the log level -//! //! The following feature flags enable APIs defined in OpenTelemetry specification that is in experimental phase: //! * `otel_unstable`: Includes unstable APIs. There are no features behind this flag at the moment. //! diff --git a/opentelemetry/src/logs/logger.rs b/opentelemetry/src/logs/logger.rs index 38fda2e8fb..4e20ca10b6 100644 --- a/opentelemetry/src/logs/logger.rs +++ b/opentelemetry/src/logs/logger.rs @@ -1,8 +1,6 @@ use std::borrow::Cow; use crate::{logs::LogRecord, InstrumentationScope}; - -#[cfg(feature = "spec_unstable_logs_enabled")] use super::Severity; /// The interface for emitting [`LogRecord`]s. @@ -19,7 +17,6 @@ pub trait Logger { /// [`Context`]: crate::Context fn emit(&self, record: Self::LogRecord); - #[cfg(feature = "spec_unstable_logs_enabled")] /// Check if the given log level is enabled. fn event_enabled(&self, level: Severity, target: &str, name: Option<&str>) -> bool; } diff --git a/opentelemetry/src/logs/noop.rs b/opentelemetry/src/logs/noop.rs index 10add3139b..9fbd228f1d 100644 --- a/opentelemetry/src/logs/noop.rs +++ b/opentelemetry/src/logs/noop.rs @@ -78,7 +78,6 @@ impl Logger for NoopLogger { NoopLogRecord {} } fn emit(&self, _record: Self::LogRecord) {} - #[cfg(feature = "spec_unstable_logs_enabled")] fn event_enabled(&self, _level: super::Severity, _target: &str, _name: Option<&str>) -> bool { false } diff --git a/scripts/lint.sh b/scripts/lint.sh index d5a9c41464..997138a952 100755 --- a/scripts/lint.sh +++ b/scripts/lint.sh @@ -21,7 +21,7 @@ if rustup component add clippy && \ cargo clippy --manifest-path=opentelemetry-prometheus/Cargo.toml --all-targets --all-features -- \ -Dwarnings - cargo_feature opentelemetry "trace,metrics,logs,spec_unstable_logs_enabled,testing" + cargo_feature opentelemetry "trace,metrics,logs,testing" cargo_feature opentelemetry-otlp "default" cargo_feature opentelemetry-otlp "default,tls" diff --git a/stress/Cargo.toml b/stress/Cargo.toml index 9063b75d79..e124bf984f 100644 --- a/stress/Cargo.toml +++ b/stress/Cargo.toml @@ -53,9 +53,9 @@ bench = false ctrlc = { workspace = true } lazy_static = { workspace = true } num_cpus = { workspace = true } -opentelemetry = { path = "../opentelemetry", features = ["metrics", "logs", "trace", "spec_unstable_logs_enabled"] } -opentelemetry_sdk = { path = "../opentelemetry-sdk", features = ["metrics", "logs", "trace", "spec_unstable_logs_enabled", "experimental_logs_concurrent_log_processor", "experimental_metrics_custom_reader"] } -opentelemetry-appender-tracing = { workspace = true, features = ["spec_unstable_logs_enabled"] } +opentelemetry = { path = "../opentelemetry", features = ["metrics", "logs", "trace"] } +opentelemetry_sdk = { path = "../opentelemetry-sdk", features = ["metrics", "logs", "trace", "experimental_logs_concurrent_log_processor", "experimental_metrics_custom_reader"] } +opentelemetry-appender-tracing = { workspace = true } rand = { workspace = true, features = ["small_rng", "os_rng"] } tracing = { workspace = true, features = ["std"]} tracing-subscriber = { workspace = true, features = ["registry", "std"] } From 8b8c80586208910530110e5ec9307ecd7d9f4231 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 2 Jul 2025 15:56:18 +0000 Subject: [PATCH 2/2] Update changelog to clarify removal of experimental feature flag Co-authored-by: cijothomas <5232798+cijothomas@users.noreply.github.com> --- opentelemetry-appender-log/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opentelemetry-appender-log/CHANGELOG.md b/opentelemetry-appender-log/CHANGELOG.md index 0a77ff3271..279ce45bc1 100644 --- a/opentelemetry-appender-log/CHANGELOG.md +++ b/opentelemetry-appender-log/CHANGELOG.md @@ -2,7 +2,7 @@ ## vNext -- **Breaking** Remove `spec_unstable_logs_enabled` feature flag - logger.enabled functionality is now always available. +- Remove experimental `spec_unstable_logs_enabled` feature flag - logger.enabled functionality is now stabilized and always available. ## 0.30.0