Skip to content

Remove spec_unstable_logs_enabled feature -copilot try1 #3029 #3031

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions opentelemetry-appender-log/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

## vNext

- The `spec_unstable_logs_enabled` feature flag has been removed. All log features are now always enabled. Any code previously gated by this flag is now available by default. This is a breaking change for users who relied on the feature flag to disable log features.

## 0.30.0

Released 2025-May-23
Expand Down
4 changes: 1 addition & 3 deletions opentelemetry-appender-log/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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",
"testing"
] }
opentelemetry-stdout = { workspace = true, features = ["logs"] }
log = { workspace = true, features = ["kv_serde"] }
Expand Down
13 changes: 3 additions & 10 deletions opentelemetry-appender-log/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,8 @@
//!
//! # Feature Flags
//!
//! This library provides the following Cargo features:
//! All log features are now always enabled. The previous `spec_unstable_logs_enabled` feature flag has been removed.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That doesn't sound right. Only the event_enabled feature is being made always enabled. Users would still have to opt in for other optional features such as with-serde in this case.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct. Silly mistake by Copilot!

//!
//! - `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/
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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()));
}

Expand Down
2 changes: 2 additions & 0 deletions opentelemetry-appender-tracing/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

## vNext

- The `spec_unstable_logs_enabled` feature flag has been removed. All log features are now always enabled. Any code previously gated by this flag is now available by default. This is a breaking change for users who relied on the feature flag to disable log features.

## 0.30.1

Released 2025-June-05
Expand Down
3 changes: 0 additions & 3 deletions opentelemetry-appender-tracing/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,11 @@ 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"
Expand Down
3 changes: 0 additions & 3 deletions opentelemetry-appender-tracing/src/layer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
Expand All @@ -933,7 +931,6 @@ mod tests {
}
}

#[cfg(feature = "spec_unstable_logs_enabled")]
#[test]
fn is_enabled() {
// Arrange
Expand Down
3 changes: 2 additions & 1 deletion opentelemetry-appender-tracing/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,8 @@
//! > spans to OpenTelemetry in the future.
//!
//! ## Feature Flags
//! `spec_unstable_logs_enabled`: TODO
//!
//! All log features are now always enabled. The previous `spec_unstable_logs_enabled` feature flag has been removed.
//!
//! `experimental_metadata_attributes`: TODO
//!
Expand Down
1 change: 1 addition & 0 deletions opentelemetry-sdk/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

## vNext

- The `spec_unstable_logs_enabled` feature flag has been removed. All log features are now always enabled. Any code previously gated by this flag is now available by default. This is a breaking change for users who relied on the feature flag to disable log features.
- TODO: Placeholder for Span processor related things
- *Fix* SpanProcessor::on_start is no longer called on non recording spans

Expand Down
2 changes: 0 additions & 2 deletions opentelemetry-sdk/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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 = []
Expand Down Expand Up @@ -92,7 +91,6 @@ harness = false
[[bench]]
name = "log_enabled"
harness = false
required-features = ["spec_unstable_logs_enabled", "experimental_logs_concurrent_log_processor"]

[[bench]]
name = "tracer_creation"
Expand Down
2 changes: 1 addition & 1 deletion opentelemetry-sdk/benches/log_enabled.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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};
Expand Down
2 changes: 1 addition & 1 deletion opentelemetry-sdk/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@
//!
//! For `logs` the following feature flags are available:
//!
//! * `spec_unstable_logs_enabled`: control the log level
//! All log features are now always enabled. The previous `spec_unstable_logs_enabled` feature flag has been removed.
//!
//! Support for recording and exporting telemetry asynchronously and perform
//! metrics aggregation can be added via the following flags:
Expand Down
10 changes: 5 additions & 5 deletions opentelemetry-sdk/src/logs/concurrent_log_processor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,11 @@
self.exporter.shutdown_with_timeout(timeout)
}

#[cfg(feature = "spec_unstable_logs_enabled")]
fn set_resource(&mut self, resource: &Resource) {
self.exporter.set_resource(resource);
}

Check warning on line 53 in opentelemetry-sdk/src/logs/concurrent_log_processor.rs

View check run for this annotation

Codecov / codecov/patch

opentelemetry-sdk/src/logs/concurrent_log_processor.rs#L51-L53

Added lines #L51 - L53 were not covered by tests

// event_enabled is now always enabled and delegates to exporter
#[inline]
fn event_enabled(
&self,
Expand All @@ -58,8 +62,4 @@
) -> bool {
self.exporter.event_enabled(level, target, name)
}

fn set_resource(&mut self, resource: &Resource) {
self.exporter.set_resource(resource);
}
}
2 changes: 0 additions & 2 deletions opentelemetry-sdk/src/logs/export.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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
Expand Down
2 changes: 0 additions & 2 deletions opentelemetry-sdk/src/logs/log_processor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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
Expand Down
2 changes: 0 additions & 2 deletions opentelemetry-sdk/src/logs/logger.rs
Original file line number Diff line number Diff line change
@@ -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;

Expand Down Expand Up @@ -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() {
Expand Down
2 changes: 1 addition & 1 deletion opentelemetry-sdk/src/logs/simple_log_processor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ impl<T: LogExporter> LogProcessor for SimpleLogProcessor<T> {
}
}

#[cfg(feature = "spec_unstable_logs_enabled")]
// event_enabled is now always enabled and delegates to exporter
#[inline]
fn event_enabled(
&self,
Expand Down
2 changes: 1 addition & 1 deletion opentelemetry-stdout/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"] }
Expand Down
1 change: 1 addition & 0 deletions opentelemetry/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

## vNext

- The `spec_unstable_logs_enabled` feature flag has been removed. All log features are now always enabled. Any code previously gated by this flag is now available by default. This is a breaking change for users who relied on the feature flag to disable log features.
- Add `get_all` method to `opentelemetry::propagation::Extractor` to return all values of the given propagation key and provide a default implementation.

## 0.30.0
Expand Down
2 changes: 0 additions & 2 deletions opentelemetry/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,9 @@ 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
criterion = { workspace = true }
rand = { workspace = true, features = ["os_rng", "thread_rng"] }
tokio = { version = "1.0", features = ["full"] }
Expand Down
6 changes: 1 addition & 5 deletions opentelemetry/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -163,11 +163,7 @@
//!
//! 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.
//! All log features are now always enabled. The previous `spec_unstable_logs_enabled` feature flag has been removed.
//!
//! # Related Crates
//!
Expand Down
3 changes: 0 additions & 3 deletions opentelemetry/src/logs/logger.rs
Original file line number Diff line number Diff line change
@@ -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.
Expand All @@ -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;
}
Expand Down
1 change: 0 additions & 1 deletion opentelemetry/src/logs/noop.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
2 changes: 1 addition & 1 deletion scripts/lint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
6 changes: 3 additions & 3 deletions stress/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"] }
Expand Down
Loading