From 2c35ddc209bf91aa3aefc1f75e60a05397c3685a Mon Sep 17 00:00:00 2001 From: gruebel Date: Wed, 12 Mar 2025 23:46:31 +0100 Subject: [PATCH 1/2] Change logger scope in log appender --- opentelemetry-appender-log/CHANGELOG.md | 6 +++++ opentelemetry-appender-log/src/lib.rs | 27 ++++++++++++++------- opentelemetry-appender-tracing/src/layer.rs | 3 +-- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/opentelemetry-appender-log/CHANGELOG.md b/opentelemetry-appender-log/CHANGELOG.md index bf54e6c817..67f206ccfd 100644 --- a/opentelemetry-appender-log/CHANGELOG.md +++ b/opentelemetry-appender-log/CHANGELOG.md @@ -2,6 +2,12 @@ ## vNext +- Similar to the `opentelemetry-appender-tracing` fix [2658](https://github.com/open-telemetry/opentelemetry-rust/issues/2658) + InstrumentationScope(Logger) used by the appender now uses an empty ("") named Logger. + Previously, a Logger with name and version of the crate was used. + Receivers (processors, exporters) are expected to use `LogRecord.target()` as scope name. + This is already done in OTLP Exporters, so this change should be transparent to most users. + ## 0.28.0 Released 2025-Feb-10 diff --git a/opentelemetry-appender-log/src/lib.rs b/opentelemetry-appender-log/src/lib.rs index 785b616036..736b9f4e24 100644 --- a/opentelemetry-appender-log/src/lib.rs +++ b/opentelemetry-appender-log/src/lib.rs @@ -113,7 +113,7 @@ use log::{Level, Metadata, Record}; use opentelemetry::{ logs::{AnyValue, LogRecord, Logger, LoggerProvider, Severity}, - InstrumentationScope, Key, + Key, }; #[cfg(feature = "experimental_metadata_attributes")] use opentelemetry_semantic_conventions::attribute::{ @@ -189,12 +189,13 @@ where L: Logger + Send + Sync, { pub fn new(provider: &P) -> Self { - let scope = InstrumentationScope::builder("opentelemetry-log-appender") - .with_version(env!("CARGO_PKG_VERSION")) - .build(); - - OpenTelemetryLogBridge { - logger: provider.logger_with_scope(scope), + Self { + // Using empty scope name. + // The name/version of this library itself can be added + // as a Scope attribute once a semantic convention is + // defined for the same. + // See https://github.com/open-telemetry/semantic-conventions/issues/1550 + logger: provider.logger(""), _phantom: Default::default(), } } @@ -985,9 +986,13 @@ mod tests { ); let logs = exporter.get_emitted_logs().unwrap(); + assert_eq!(logs.len(), 1); + + let log = logs.first().unwrap(); + assert_eq!(log.instrumentation.name(), ""); let get = |needle: &str| -> Option { - logs[0].record.attributes_iter().find_map(|(k, v)| { + log.record.attributes_iter().find_map(|(k, v)| { if k.as_str() == needle { Some(v.clone()) } else { @@ -1197,9 +1202,13 @@ mod tests { ); let logs = exporter.get_emitted_logs().unwrap(); + assert_eq!(logs.len(), 1); + + let log = logs.first().unwrap(); + assert_eq!(log.instrumentation.name(), ""); let get = |needle: &str| -> Option { - logs[0].record.attributes_iter().find_map(|(k, v)| { + log.record.attributes_iter().find_map(|(k, v)| { if k.as_str() == needle { Some(v.clone()) } else { diff --git a/opentelemetry-appender-tracing/src/layer.rs b/opentelemetry-appender-tracing/src/layer.rs index 6a15bc9dba..4d9818e713 100644 --- a/opentelemetry-appender-tracing/src/layer.rs +++ b/opentelemetry-appender-tracing/src/layer.rs @@ -173,8 +173,7 @@ where let mut log_record = self.logger.create_log_record(); - // TODO: Fix heap allocation - log_record.set_target(target.to_string()); + log_record.set_target(target); log_record.set_event_name(name); log_record.set_severity_number(severity); log_record.set_severity_text(metadata.level().as_str()); From 8ed638f30959b6bf5bc35d3557b6339a45da84f7 Mon Sep 17 00:00:00 2001 From: gruebel Date: Thu, 13 Mar 2025 10:24:09 +0100 Subject: [PATCH 2/2] revert layer change --- opentelemetry-appender-tracing/src/layer.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/opentelemetry-appender-tracing/src/layer.rs b/opentelemetry-appender-tracing/src/layer.rs index 4d9818e713..6a15bc9dba 100644 --- a/opentelemetry-appender-tracing/src/layer.rs +++ b/opentelemetry-appender-tracing/src/layer.rs @@ -173,7 +173,8 @@ where let mut log_record = self.logger.create_log_record(); - log_record.set_target(target); + // TODO: Fix heap allocation + log_record.set_target(target.to_string()); log_record.set_event_name(name); log_record.set_severity_number(severity); log_record.set_severity_text(metadata.level().as_str());