From 8ec2fe392d6e0d88ac10bb9f1c4115e2dce653c9 Mon Sep 17 00:00:00 2001 From: cijothomas Date: Tue, 23 Jun 2026 22:51:35 +0530 Subject: [PATCH 1/2] feat(api): accept quoted-key fields in otel logging macros Change $key:ident to $key:tt in otel_info!/otel_warn!/otel_debug!/otel_error! macro arms. This allows dotted attribute names like "otel.component.type" = "value" required by SDK self-observability semantic conventions (open-telemetry/semantic-conventions#3723). Existing callers using plain ident keys continue to work unchanged. --- opentelemetry/src/global/internal_logging.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/opentelemetry/src/global/internal_logging.rs b/opentelemetry/src/global/internal_logging.rs index 17b812cab1..051b94cf44 100644 --- a/opentelemetry/src/global/internal_logging.rs +++ b/opentelemetry/src/global/internal_logging.rs @@ -39,7 +39,7 @@ macro_rules! otel_info { let _ = $name; // Compiler will optimize this out as it's unused. } }; - (name: $name:expr, $($key:ident = $value:expr),+ $(,)?) => { + (name: $name:expr, $($key:tt = $value:expr),+ $(,)?) => { #[cfg(feature = "internal-logs")] { $crate::_private::info!(name: $name, target: env!("CARGO_PKG_NAME"), name = $name, $($key = $value),+); @@ -90,7 +90,7 @@ macro_rules! otel_warn { let _ = $name; // Compiler will optimize this out as it's unused. } }; - (name: $name:expr, $($key:ident = $value:expr),+ $(,)?) => { + (name: $name:expr, $($key:tt = $value:expr),+ $(,)?) => { #[cfg(feature = "internal-logs")] { $crate::_private::warn!(name: $name, @@ -147,7 +147,7 @@ macro_rules! otel_debug { let _ = $name; // Compiler will optimize this out as it's unused. } }; - (name: $name:expr, $($key:ident = $value:expr),+ $(,)?) => { + (name: $name:expr, $($key:tt = $value:expr),+ $(,)?) => { #[cfg(feature = "internal-logs")] { $crate::_private::debug!(name: $name, target: env!("CARGO_PKG_NAME"), name = $name, $($key = $value),+); @@ -198,7 +198,7 @@ macro_rules! otel_error { let _ = $name; // Compiler will optimize this out as it's unused. } }; - (name: $name:expr, $($key:ident = $value:expr),+ $(,)?) => { + (name: $name:expr, $($key:tt = $value:expr),+ $(,)?) => { #[cfg(feature = "internal-logs")] { $crate::_private::error!(name: $name, From 6a63d55c47ec7efbcb1f9ac1d5cbbbe742bb8083 Mon Sep 17 00:00:00 2001 From: cijothomas Date: Thu, 25 Jun 2026 08:53:57 +0530 Subject: [PATCH 2/2] docs: add changelog entry for quoted-key macro support --- opentelemetry/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/opentelemetry/CHANGELOG.md b/opentelemetry/CHANGELOG.md index 0ff38d81b0..66f7a7a3cb 100644 --- a/opentelemetry/CHANGELOG.md +++ b/opentelemetry/CHANGELOG.md @@ -2,6 +2,8 @@ ## vNext +- `otel_info!`, `otel_warn!`, `otel_debug!`, and `otel_error!` macros now accept quoted-key fields + (e.g. `"otel.component.type" = "value"`) for dotted attribute names. - **Added** `BoundGauge` type and `Gauge::bind()` method, extending the experimental bound-instrument API (previously available for `Counter` and `Histogram`) to `Gauge`. Gated behind the