Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
6 changes: 6 additions & 0 deletions opentelemetry-appender-log/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
27 changes: 18 additions & 9 deletions opentelemetry-appender-log/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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::{
Expand Down Expand Up @@ -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(),
}
}
Expand Down Expand Up @@ -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<AnyValue> {
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 {
Expand Down Expand Up @@ -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<AnyValue> {
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 {
Expand Down
3 changes: 1 addition & 2 deletions opentelemetry-appender-tracing/src/layer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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());
Expand Down