Skip to content

Commit 2d6ca9f

Browse files
Copilotcijothomas
andcommitted
Add Clone implementation to SdkLogger for API consistency
Co-authored-by: cijothomas <[email protected]>
1 parent 5e19c8b commit 2d6ca9f

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

opentelemetry-sdk/src/logs/logger.rs

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use opentelemetry::{trace::TraceContextExt, Context, InstrumentationScope};
55
use opentelemetry::logs::Severity;
66
use opentelemetry::time::now;
77

8-
#[derive(Debug)]
8+
#[derive(Debug, Clone)]
99
/// The object for emitting [`LogRecord`]s.
1010
///
1111
/// [`LogRecord`]: opentelemetry::logs::LogRecord
@@ -64,3 +64,26 @@ impl opentelemetry::logs::Logger for SdkLogger {
6464
.any(|processor| processor.event_enabled(level, target, name))
6565
}
6666
}
67+
68+
#[cfg(test)]
69+
mod tests {
70+
use super::*;
71+
use crate::logs::SdkLoggerProvider;
72+
use opentelemetry::logs::Logger;
73+
use opentelemetry::InstrumentationScope;
74+
75+
#[test]
76+
fn test_sdk_logger_clone() {
77+
// Test that SdkLogger can be cloned
78+
let provider = SdkLoggerProvider::builder().build();
79+
let scope = InstrumentationScope::builder("test-logger").build();
80+
let logger = SdkLogger::new(scope, provider);
81+
82+
// Clone should work without error
83+
let cloned_logger = logger.clone();
84+
85+
// Both loggers should be usable
86+
let _record1 = logger.create_log_record();
87+
let _record2 = cloned_logger.create_log_record();
88+
}
89+
}

0 commit comments

Comments
 (0)