Skip to content
Merged
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
3 changes: 3 additions & 0 deletions opentelemetry-appender-log/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

## vNext

- "spec_unstable_logs_enabled" feature flag is removed. The capability (and the
backing specification) is now stable and is enabled by default.

## 0.31.0

Released 2025-Sep-25
Expand Down
3 changes: 1 addition & 2 deletions opentelemetry-appender-log/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,11 @@ serde = { workspace = true, optional = true, features = ["std"] }
opentelemetry-semantic-conventions = { workspace = true, optional = true, features = ["semconv_experimental"] }

[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 = { workspace = true, features = ["testing", "spec_unstable_logs_enabled"] }
opentelemetry_sdk = { workspace = true, features = ["testing"] }
opentelemetry-stdout = { workspace = true, features = ["logs"] }
log = { workspace = true, features = ["kv_serde"] }
tokio = { workspace = true }
Expand Down
16 changes: 3 additions & 13 deletions opentelemetry-appender-log/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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/
Expand Down Expand Up @@ -134,15 +133,9 @@ where
P: LoggerProvider<Logger = L> + Send + Sync,
L: Logger + Send + Sync,
{
fn enabled(&self, _metadata: &Metadata) -> bool {
#[cfg(feature = "spec_unstable_logs_enabled")]
return self.logger.event_enabled(
severity_of_level(_metadata.level()),
_metadata.target(),
None,
);
#[cfg(not(feature = "spec_unstable_logs_enabled"))]
true
fn enabled(&self, metadata: &Metadata) -> bool {
self.logger
.event_enabled(severity_of_level(metadata.level()), metadata.target(), None)
}

fn log(&self, record: &Record) {
Expand Down Expand Up @@ -791,9 +784,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
3 changes: 3 additions & 0 deletions opentelemetry-appender-tracing/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
[3190]: https://github.com/open-telemetry/opentelemetry-rust/issues/3190
[31901]: https://github.com/tokio-rs/tracing-opentelemetry/blob/884b00cf438557733bd9cef9456281bea8c4bea1/src/layer.rs#L842

- "spec_unstable_logs_enabled" feature flag is removed. The capability (and the
backing specification) is now stable and is enabled by default.

## 0.31.1

Released 2025-Oct-1
Expand Down
2 changes: 0 additions & 2 deletions opentelemetry-appender-tracing/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,11 @@ pprof = { workspace = true }
[features]
default = []
experimental_metadata_attributes = ["dep:tracing-log"]
spec_unstable_logs_enabled = ["opentelemetry/spec_unstable_logs_enabled"]
bench_profiling = []

[[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 @@ -781,7 +780,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 @@ -802,7 +800,6 @@ mod tests {
}
}

#[cfg(feature = "spec_unstable_logs_enabled")]
#[test]
fn is_enabled() {
// Arrange
Expand Down
2 changes: 0 additions & 2 deletions opentelemetry-appender-tracing/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -135,11 +135,9 @@
//! > spans to OpenTelemetry in the future.
//!
//! ## Feature Flags
//! `spec_unstable_logs_enabled`: TODO
//!
//! `experimental_metadata_attributes`: TODO
//!
//! `experimental_use_tracing_span_context`: TODO
//!
//! ## Limitations
//! 1. There is no support for `Valuable` crate. [2819](https://github.com/open-telemetry/opentelemetry-rust/issues/2819)
Expand Down
3 changes: 3 additions & 0 deletions opentelemetry-sdk/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@
[3227]: https://github.com/open-telemetry/opentelemetry-rust/pull/3227
[3277]: https://github.com/open-telemetry/opentelemetry-rust/pull/3277

- "spec_unstable_logs_enabled" feature flag is removed. The capability (and the
backing specification) is now stable and is enabled by default.

## 0.31.0

Released 2025-Sep-25
Expand Down
3 changes: 1 addition & 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"]
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 @@ -97,7 +96,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"
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
7 changes: 2 additions & 5 deletions opentelemetry-sdk/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -77,16 +77,13 @@
//! The following feature flags can used to control the telemetry signals to use:
//!
//! * `trace`: Includes the trace SDK (enabled by default).
//! * `metrics`: Includes the metrics SDK.
//! * `logs`: Includes the logs SDK.
//! * `metrics`: Includes the metrics SDK (enabled by default).
//! * `logs`: Includes the logs SDK (enabled by default).
//!
//! For `trace` the following feature flags are available:
//!
//! * `jaeger_remote_sampler`: Enables the [Jaeger remote sampler](https://www.jaegertracing.io/docs/1.53/sampling/).
//!
//! 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:
Expand Down
1 change: 0 additions & 1 deletion opentelemetry-sdk/src/logs/concurrent_log_processor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ impl<T: LogExporter> LogProcessor for SimpleConcurrentLogProcessor<T> {
self.exporter.shutdown_with_timeout(timeout)
}

#[cfg(feature = "spec_unstable_logs_enabled")]
#[inline]
fn event_enabled(
&self,
Expand Down
3 changes: 1 addition & 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,7 @@ 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
3 changes: 1 addition & 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::{otel_warn, InstrumentationScope};

Expand Down Expand Up @@ -79,7 +78,7 @@ 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
4 changes: 2 additions & 2 deletions opentelemetry-sdk/src/logs/logger.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ use super::{SdkLogRecord, SdkLoggerProvider};
use opentelemetry::trace::TraceContextExt;
use opentelemetry::{Context, InstrumentationScope};

#[cfg(feature = "spec_unstable_logs_enabled")]
use opentelemetry::logs::Severity;
use opentelemetry::time::now;

Expand Down Expand Up @@ -57,12 +56,13 @@ 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() {
return false;
}
// Returns false if there are no log processors.
// Returns true if at least one processor returns true.
self.provider
.log_processors()
.iter()
Expand Down
1 change: 0 additions & 1 deletion opentelemetry-sdk/src/logs/simple_log_processor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,6 @@ impl<T: LogExporter> LogProcessor for SimpleLogProcessor<T> {
}
}

#[cfg(feature = "spec_unstable_logs_enabled")]
#[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
3 changes: 3 additions & 0 deletions opentelemetry/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
[3227]: https://github.com/open-telemetry/opentelemetry-rust/pull/3227
[3277]: https://github.com/open-telemetry/opentelemetry-rust/pull/3277

- "spec_unstable_logs_enabled" feature flag is removed. The capability (and the
backing specification) is now stable and is enabled by default.

## v0.31.0

Released 2025-Sep-25
Expand Down
3 changes: 1 addition & 2 deletions opentelemetry/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"] }
Expand Down
2 changes: 0 additions & 2 deletions opentelemetry/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -163,8 +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.
Expand Down
4 changes: 1 addition & 3 deletions opentelemetry/src/logs/logger.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,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,8 +18,7 @@ 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.
/// Check if the given log is enabled.
fn event_enabled(&self, level: Severity, target: &str, name: Option<&str>) -> bool;
}

Expand Down
2 changes: 1 addition & 1 deletion opentelemetry/src/logs/noop.rs
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ 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