Skip to content

Commit cef3c23

Browse files
committed
initial commit
1 parent f1cdaca commit cef3c23

File tree

9 files changed

+75
-9
lines changed

9 files changed

+75
-9
lines changed

opentelemetry-appender-log/src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ where
131131
log_record.set_severity_text(record.level().as_str().into());
132132
log_record.set_body(AnyValue::from(record.args().to_string()));
133133
log_record.add_attributes(log_attributes(record.key_values()));
134+
log_record.set_target(record.metadata().target().to_string());
134135

135136
self.logger.emit(log_record);
136137
}

opentelemetry-appender-tracing/src/layer.rs

+1
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ where
172172
let mut log_record = self.logger.create_log_record();
173173
log_record.set_severity_number(severity_of_level(meta.level()));
174174
log_record.set_severity_text(meta.level().to_string().into());
175+
log_record.set_target(meta.target());
175176

176177
let mut visitor = EventVisitor::new(&mut log_record);
177178
visitor.visit_metadata(meta);

opentelemetry-proto/src/transform/common.rs

+32-6
Original file line numberDiff line numberDiff line change
@@ -42,21 +42,47 @@ pub mod tonic {
4242
#[cfg(any(feature = "trace", feature = "logs"))]
4343
use opentelemetry_sdk::Resource;
4444

45-
impl From<opentelemetry_sdk::InstrumentationLibrary> for InstrumentationScope {
46-
fn from(library: opentelemetry_sdk::InstrumentationLibrary) -> Self {
45+
impl
46+
From<(
47+
opentelemetry_sdk::InstrumentationLibrary,
48+
Option<Cow<'static, str>>,
49+
)> for InstrumentationScope
50+
{
51+
fn from(
52+
data: (
53+
opentelemetry_sdk::InstrumentationLibrary,
54+
Option<Cow<'static, str>>,
55+
),
56+
) -> Self {
57+
let (library, target) = data;
4758
InstrumentationScope {
48-
name: library.name.into_owned(),
59+
name: target
60+
.map(|t| t.replace("::", "."))
61+
.unwrap_or_else(|| library.name.into_owned()),
4962
version: library.version.map(Cow::into_owned).unwrap_or_default(),
5063
attributes: Attributes::from(library.attributes).0,
5164
..Default::default()
5265
}
5366
}
5467
}
5568

56-
impl From<&opentelemetry_sdk::InstrumentationLibrary> for InstrumentationScope {
57-
fn from(library: &opentelemetry_sdk::InstrumentationLibrary) -> Self {
69+
impl
70+
From<(
71+
&opentelemetry_sdk::InstrumentationLibrary,
72+
Option<Cow<'static, str>>,
73+
)> for InstrumentationScope
74+
{
75+
fn from(
76+
data: (
77+
&opentelemetry_sdk::InstrumentationLibrary,
78+
Option<Cow<'static, str>>,
79+
),
80+
) -> Self {
81+
let (library, target) = data;
5882
InstrumentationScope {
59-
name: library.name.to_string(),
83+
name: target
84+
.map(|t| t.replace("::", "."))
85+
.unwrap_or_else(|| library.name.to_string()),
6086
version: library
6187
.version
6288
.as_ref()

opentelemetry-proto/src/transform/logs.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ pub mod tonic {
137137
.clone()
138138
.map(Into::into)
139139
.unwrap_or_default(),
140-
scope: Some(log_data.instrumentation.into()),
140+
scope: Some((log_data.instrumentation, log_data.record.target.clone()).into()),
141141
log_records: vec![log_data.record.into()],
142142
}],
143143
}

opentelemetry-proto/src/transform/metrics.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ pub mod tonic {
131131
impl From<&SdkScopeMetrics> for TonicScopeMetrics {
132132
fn from(sm: &SdkScopeMetrics) -> Self {
133133
TonicScopeMetrics {
134-
scope: Some((&sm.scope).into()),
134+
scope: Some((&sm.scope, None).into()),
135135
metrics: sm.metrics.iter().map(Into::into).collect(),
136136
schema_url: sm
137137
.scope

opentelemetry-proto/src/transform/trace.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ pub mod tonic {
6161
.as_ref()
6262
.map(ToString::to_string)
6363
.unwrap_or_default(),
64-
scope: Some(source_span.instrumentation_lib.into()),
64+
scope: Some((source_span.instrumentation_lib, None).into()),
6565
spans: vec![Span {
6666
trace_id: source_span.span_context.trace_id().to_bytes().to_vec(),
6767
span_id: source_span.span_context.span_id().to_bytes().to_vec(),

opentelemetry-sdk/src/logs/record.rs

+25
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ pub struct LogRecord {
1313
/// Event name. Optional as not all the logging API support it.
1414
pub event_name: Option<Cow<'static, str>>,
1515

16+
/// Target of the log record
17+
pub target: Option<Cow<'static, str>>,
18+
1619
/// Record timestamp
1720
pub timestamp: Option<SystemTime>,
1821

@@ -42,6 +45,14 @@ impl opentelemetry::logs::LogRecord for LogRecord {
4245
self.event_name = Some(name.into());
4346
}
4447

48+
// Sets the `target` of a record
49+
fn set_target<T>(&mut self, _target: T)
50+
where
51+
T: Into<Cow<'static, str>>,
52+
{
53+
self.target = Some(_target.into());
54+
}
55+
4556
fn set_timestamp(&mut self, timestamp: SystemTime) {
4657
self.timestamp = Some(timestamp);
4758
}
@@ -116,6 +127,20 @@ mod tests {
116127
use std::borrow::Cow;
117128
use std::time::SystemTime;
118129

130+
#[test]
131+
fn test_set_eventname() {
132+
let mut log_record = LogRecord::default();
133+
log_record.set_event_name("test_event");
134+
assert_eq!(log_record.event_name, Some(Cow::Borrowed("test_event")));
135+
}
136+
137+
#[test]
138+
fn test_set_target() {
139+
let mut log_record = LogRecord::default();
140+
log_record.set_target("foo::bar");
141+
assert_eq!(log_record.target, Some(Cow::Borrowed("foo::bar")));
142+
}
143+
119144
#[test]
120145
fn test_set_timestamp() {
121146
let mut log_record = LogRecord::default();

opentelemetry/src/logs/noop.rs

+8
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,14 @@ impl LogRecord for NoopLogRecord {
7171
V: Into<AnyValue>,
7272
{
7373
}
74+
75+
#[inline]
76+
// Sets the `target` of a record
77+
fn set_target<T>(&mut self, _target: T)
78+
where
79+
T: Into<Cow<'static, str>>,
80+
{
81+
}
7482
}
7583

7684
/// A no-op implementation of a [`Logger`]

opentelemetry/src/logs/record.rs

+5
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ pub trait LogRecord {
1010
{
1111
}
1212

13+
/// Sets the `target` of a record
14+
fn set_target<T>(&mut self, _target: T)
15+
where
16+
T: Into<Cow<'static, str>>;
17+
1318
/// Sets the time when the event occurred measured by the origin clock, i.e. the time at the source.
1419
fn set_timestamp(&mut self, timestamp: SystemTime);
1520

0 commit comments

Comments
 (0)