Skip to content

Commit c56a03e

Browse files
authored
Separate logger and loggerprovider mod (open-telemetry#2633)
1 parent 34742d0 commit c56a03e

File tree

3 files changed

+79
-73
lines changed

3 files changed

+79
-73
lines changed

opentelemetry-sdk/src/logs/logger.rs

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
use super::{SdkLogRecord, SdkLoggerProvider, TraceContext};
2+
use opentelemetry::{trace::TraceContextExt, Context, InstrumentationScope};
3+
4+
#[cfg(feature = "spec_unstable_logs_enabled")]
5+
use opentelemetry::logs::Severity;
6+
use opentelemetry::time::now;
7+
8+
#[derive(Debug)]
9+
/// The object for emitting [`LogRecord`]s.
10+
///
11+
/// [`LogRecord`]: opentelemetry::logs::LogRecord
12+
pub struct SdkLogger {
13+
scope: InstrumentationScope,
14+
provider: SdkLoggerProvider,
15+
}
16+
17+
impl SdkLogger {
18+
pub(crate) fn new(scope: InstrumentationScope, provider: SdkLoggerProvider) -> Self {
19+
SdkLogger { scope, provider }
20+
}
21+
22+
#[cfg(test)]
23+
pub(crate) fn instrumentation_scope(&self) -> &InstrumentationScope {
24+
&self.scope
25+
}
26+
}
27+
28+
impl opentelemetry::logs::Logger for SdkLogger {
29+
type LogRecord = SdkLogRecord;
30+
31+
fn create_log_record(&self) -> Self::LogRecord {
32+
SdkLogRecord::new()
33+
}
34+
35+
/// Emit a `LogRecord`.
36+
fn emit(&self, mut record: Self::LogRecord) {
37+
let provider = &self.provider;
38+
let processors = provider.log_processors();
39+
40+
//let mut log_record = record;
41+
if record.trace_context.is_none() {
42+
let trace_context = Context::map_current(|cx| {
43+
cx.has_active_span()
44+
.then(|| TraceContext::from(cx.span().span_context()))
45+
});
46+
47+
if let Some(ref trace_context) = trace_context {
48+
record.trace_context = Some(trace_context.clone());
49+
}
50+
}
51+
if record.observed_timestamp.is_none() {
52+
record.observed_timestamp = Some(now());
53+
}
54+
55+
for p in processors {
56+
p.emit(&mut record, &self.scope);
57+
}
58+
}
59+
60+
#[cfg(feature = "spec_unstable_logs_enabled")]
61+
fn event_enabled(&self, level: Severity, target: &str) -> bool {
62+
self.provider
63+
.log_processors()
64+
.iter()
65+
.any(|processor| processor.event_enabled(level, target, self.scope.name().as_ref()))
66+
}
67+
}

opentelemetry-sdk/src/logs/logger_provider.rs

+9-72
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,8 @@
1-
use super::{BatchLogProcessor, LogProcessor, SdkLogRecord, SimpleLogProcessor, TraceContext};
1+
use super::{BatchLogProcessor, LogProcessor, SdkLogger, SimpleLogProcessor};
22
use crate::error::{OTelSdkError, OTelSdkResult};
33
use crate::logs::LogExporter;
44
use crate::Resource;
5-
use opentelemetry::{otel_debug, otel_info, trace::TraceContextExt, Context, InstrumentationScope};
6-
7-
#[cfg(feature = "spec_unstable_logs_enabled")]
8-
use opentelemetry::logs::Severity;
9-
10-
use opentelemetry::time::now;
5+
use opentelemetry::{otel_debug, otel_info, InstrumentationScope};
116
use std::{
127
borrow::Cow,
138
sync::{
@@ -271,71 +266,10 @@ impl LoggerProviderBuilder {
271266
}
272267
}
273268

274-
#[derive(Debug)]
275-
/// The object for emitting [`LogRecord`]s.
276-
///
277-
/// [`LogRecord`]: opentelemetry::logs::LogRecord
278-
pub struct SdkLogger {
279-
scope: InstrumentationScope,
280-
provider: SdkLoggerProvider,
281-
}
282-
283-
impl SdkLogger {
284-
pub(crate) fn new(scope: InstrumentationScope, provider: SdkLoggerProvider) -> Self {
285-
SdkLogger { scope, provider }
286-
}
287-
288-
#[cfg(test)]
289-
pub(crate) fn instrumentation_scope(&self) -> &InstrumentationScope {
290-
&self.scope
291-
}
292-
}
293-
294-
impl opentelemetry::logs::Logger for SdkLogger {
295-
type LogRecord = SdkLogRecord;
296-
297-
fn create_log_record(&self) -> Self::LogRecord {
298-
SdkLogRecord::new()
299-
}
300-
301-
/// Emit a `LogRecord`.
302-
fn emit(&self, mut record: Self::LogRecord) {
303-
let provider = &self.provider;
304-
let processors = provider.log_processors();
305-
306-
//let mut log_record = record;
307-
if record.trace_context.is_none() {
308-
let trace_context = Context::map_current(|cx| {
309-
cx.has_active_span()
310-
.then(|| TraceContext::from(cx.span().span_context()))
311-
});
312-
313-
if let Some(ref trace_context) = trace_context {
314-
record.trace_context = Some(trace_context.clone());
315-
}
316-
}
317-
if record.observed_timestamp.is_none() {
318-
record.observed_timestamp = Some(now());
319-
}
320-
321-
for p in processors {
322-
p.emit(&mut record, &self.scope);
323-
}
324-
}
325-
326-
#[cfg(feature = "spec_unstable_logs_enabled")]
327-
fn event_enabled(&self, level: Severity, target: &str) -> bool {
328-
self.provider
329-
.log_processors()
330-
.iter()
331-
.any(|processor| processor.event_enabled(level, target, self.scope.name().as_ref()))
332-
}
333-
}
334-
335269
#[cfg(test)]
336270
mod tests {
337271
use crate::{
338-
logs::InMemoryLogExporter,
272+
logs::{InMemoryLogExporter, SdkLogRecord, TraceContext},
339273
resource::{
340274
SERVICE_NAME, TELEMETRY_SDK_LANGUAGE, TELEMETRY_SDK_NAME, TELEMETRY_SDK_VERSION,
341275
},
@@ -344,8 +278,11 @@ mod tests {
344278
};
345279

346280
use super::*;
347-
use opentelemetry::logs::{AnyValue, LogRecord as _, Logger, LoggerProvider};
348281
use opentelemetry::trace::{SpanId, TraceId, Tracer as _, TracerProvider};
282+
use opentelemetry::{
283+
logs::{AnyValue, LogRecord as _, Logger, LoggerProvider},
284+
trace::TraceContextExt,
285+
};
349286
use opentelemetry::{Key, KeyValue, Value};
350287
use std::fmt::{Debug, Formatter};
351288
use std::sync::atomic::AtomicU64;
@@ -765,14 +702,14 @@ mod tests {
765702
emitted_logs[0].clone().record.body,
766703
Some(AnyValue::String("Testing empty logger name".into()))
767704
);
768-
assert_eq!(logger.scope.name(), "");
705+
assert_eq!(logger.instrumentation_scope().name(), "");
769706

770707
// Assert the second log created through the scope
771708
assert_eq!(
772709
emitted_logs[1].clone().record.body,
773710
Some(AnyValue::String("Testing empty logger scope name".into()))
774711
);
775-
assert_eq!(scoped_logger.scope.name(), "");
712+
assert_eq!(scoped_logger.instrumentation_scope().name(), "");
776713
}
777714

778715
#[derive(Debug)]

opentelemetry-sdk/src/logs/mod.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
mod error;
33
mod export;
44
mod log_processor;
5+
mod logger;
56
mod logger_provider;
67
pub(crate) mod record;
78

@@ -19,7 +20,8 @@ pub use log_processor::{
1920
BatchConfig, BatchConfigBuilder, BatchLogProcessor, BatchLogProcessorBuilder, LogProcessor,
2021
SimpleLogProcessor,
2122
};
22-
pub use logger_provider::{LoggerProviderBuilder, SdkLogger, SdkLoggerProvider};
23+
pub use logger::SdkLogger;
24+
pub use logger_provider::{LoggerProviderBuilder, SdkLoggerProvider};
2325
pub use record::{SdkLogRecord, TraceContext};
2426

2527
#[cfg(feature = "experimental_logs_batch_log_processor_with_async_runtime")]

0 commit comments

Comments
 (0)