Skip to content

Commit 97428ea

Browse files
committed
review comments
1 parent aba3367 commit 97428ea

File tree

9 files changed

+44
-108
lines changed

9 files changed

+44
-108
lines changed

opentelemetry-appender-log/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ where
130130
log_record.set_severity_number(severity_of_level(record.level()));
131131
log_record.set_severity_text(record.level().as_str().into());
132132
log_record.set_body(AnyValue::from(record.args().to_string()));
133-
log_record.set_attributes(log_attributes(record.key_values()));
133+
log_record.add_attributes(log_attributes(record.key_values()));
134134

135135
self.logger.emit(log_record);
136136
}

opentelemetry-appender-tracing/src/layer.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ impl EventVisitor {
7575
if let Some(body) = self.log_record_body {
7676
log_record.set_body(body);
7777
}
78-
log_record.set_attributes(self.log_record_attributes);
78+
log_record.add_attributes(self.log_record_attributes);
7979
}
8080
}
8181

opentelemetry-sdk/CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
- `shutdown` methods in `LoggerProvider` and `LogProcessor` now takes a immutable reference
2727
- After `shutdown`, `LoggerProvider` will return noop `Logger`
2828
- After `shutdown`, `LogProcessor` will not process any new logs
29+
- Moving LogRecord implementation to the SDK. [1702](https://github.com/open-telemetry/opentelemetry-rust/pull/1702).
30+
- Relocated `LogRecord` struct to SDK, as an implementation for the trait in the API.
2931

3032
## v0.22.1
3133

opentelemetry-sdk/benches/log.rs

+24-24
Original file line numberDiff line numberDiff line change
@@ -69,36 +69,36 @@ fn criterion_benchmark(c: &mut Criterion) {
6969
log_benchmark_group(c, "simple-log-with-int", |logger| {
7070
let mut log_record = logger.create_log_record();
7171
log_record.set_body("simple log".into());
72-
log_record.set_attribute("testint", 2);
72+
log_record.add_attribute("testint", 2);
7373
logger.emit(log_record);
7474
});
7575

7676
log_benchmark_group(c, "simple-log-with-double", |logger| {
7777
let mut log_record = logger.create_log_record();
7878
log_record.set_body("simple log".into());
79-
log_record.set_attribute("testdouble", 2.2);
79+
log_record.add_attribute("testdouble", 2.2);
8080
logger.emit(log_record);
8181
});
8282

8383
log_benchmark_group(c, "simple-log-with-string", |logger| {
8484
let mut log_record = logger.create_log_record();
8585
log_record.set_body("simple log".into());
86-
log_record.set_attribute("teststring", "test");
86+
log_record.add_attribute("teststring", "test");
8787
logger.emit(log_record);
8888
});
8989

9090
log_benchmark_group(c, "simple-log-with-bool", |logger| {
9191
let mut log_record = logger.create_log_record();
9292
log_record.set_body("simple log".into());
93-
log_record.set_attribute("testbool", AnyValue::Boolean(true));
93+
log_record.add_attribute("testbool", AnyValue::Boolean(true));
9494
logger.emit(log_record);
9595
});
9696

9797
let bytes = AnyValue::Bytes(vec![25u8, 30u8, 40u8]);
9898
log_benchmark_group(c, "simple-log-with-bytes", |logger| {
9999
let mut log_record = logger.create_log_record();
100100
log_record.set_body("simple log".into());
101-
log_record.set_attribute("testbytes", bytes.clone());
101+
log_record.add_attribute("testbytes", bytes.clone());
102102
logger.emit(log_record);
103103
});
104104

@@ -113,15 +113,15 @@ fn criterion_benchmark(c: &mut Criterion) {
113113
log_benchmark_group(c, "simple-log-with-a-lot-of-bytes", |logger| {
114114
let mut log_record = logger.create_log_record();
115115
log_record.set_body("simple log".into());
116-
log_record.set_attribute("testbytes", bytes.clone());
116+
log_record.add_attribute("testbytes", bytes.clone());
117117
logger.emit(log_record);
118118
});
119119

120120
let vec_any_values = AnyValue::ListAny(vec![AnyValue::Int(25), "test".into(), true.into()]);
121121
log_benchmark_group(c, "simple-log-with-vec-any-value", |logger| {
122122
let mut log_record = logger.create_log_record();
123123
log_record.set_body("simple log".into());
124-
log_record.set_attribute("testvec", vec_any_values.clone());
124+
log_record.add_attribute("testvec", vec_any_values.clone());
125125
logger.emit(log_record);
126126
});
127127

@@ -135,7 +135,7 @@ fn criterion_benchmark(c: &mut Criterion) {
135135
log_benchmark_group(c, "simple-log-with-inner-vec-any-value", |logger| {
136136
let mut log_record = logger.create_log_record();
137137
log_record.set_body("simple log".into());
138-
log_record.set_attribute("testvec", vec_any_values.clone());
138+
log_record.add_attribute("testvec", vec_any_values.clone());
139139
logger.emit(log_record);
140140
});
141141

@@ -147,7 +147,7 @@ fn criterion_benchmark(c: &mut Criterion) {
147147
log_benchmark_group(c, "simple-log-with-map-any-value", |logger| {
148148
let mut log_record = logger.create_log_record();
149149
log_record.set_body("simple log".into());
150-
log_record.set_attribute("testmap", map_any_values.clone());
150+
log_record.add_attribute("testmap", map_any_values.clone());
151151
logger.emit(log_record);
152152
});
153153

@@ -165,7 +165,7 @@ fn criterion_benchmark(c: &mut Criterion) {
165165
log_benchmark_group(c, "simple-log-with-inner-map-any-value", |logger| {
166166
let mut log_record = logger.create_log_record();
167167
log_record.set_body("simple log".into());
168-
log_record.set_attribute("testmap", map_any_values.clone());
168+
log_record.add_attribute("testmap", map_any_values.clone());
169169
logger.emit(log_record);
170170
});
171171

@@ -193,10 +193,10 @@ fn criterion_benchmark(c: &mut Criterion) {
193193
log_record.set_observed_timestamp(now);
194194
log_record.set_severity_number(Severity::Warn);
195195
log_record.set_severity_text(Severity::Warn.name().into());
196-
log_record.set_attribute("name", "my-event-name");
197-
log_record.set_attribute("event.id", 20);
198-
log_record.set_attribute("user.name", "otel");
199-
log_record.set_attribute("user.email", "otel@opentelemetry.io");
196+
log_record.add_attribute("name", "my-event-name");
197+
log_record.add_attribute("event.id", 20);
198+
log_record.add_attribute("user.name", "otel");
199+
log_record.add_attribute("user.email", "otel@opentelemetry.io");
200200
logger.emit(log_record);
201201
});
202202

@@ -207,15 +207,15 @@ fn criterion_benchmark(c: &mut Criterion) {
207207
log_record.set_observed_timestamp(now);
208208
log_record.set_severity_number(Severity::Warn);
209209
log_record.set_severity_text(Severity::Warn.name().into());
210-
log_record.set_attribute("name", "my-event-name");
211-
log_record.set_attribute("event.id", 20);
212-
log_record.set_attribute("user.name", "otel");
213-
log_record.set_attribute("user.email", "otel@opentelemetry.io");
214-
log_record.set_attribute("code.filename", "log.rs");
215-
log_record.set_attribute("code.filepath", "opentelemetry_sdk/benches/log.rs");
216-
log_record.set_attribute("code.lineno", 96);
217-
log_record.set_attribute("code.namespace", "opentelemetry_sdk::benches::log");
218-
log_record.set_attribute("log.target", "opentelemetry_sdk::benches::log");
210+
log_record.add_attribute("name", "my-event-name");
211+
log_record.add_attribute("event.id", 20);
212+
log_record.add_attribute("user.name", "otel");
213+
log_record.add_attribute("user.email", "otel@opentelemetry.io");
214+
log_record.add_attribute("code.filename", "log.rs");
215+
log_record.add_attribute("code.filepath", "opentelemetry_sdk/benches/log.rs");
216+
log_record.add_attribute("code.lineno", 96);
217+
log_record.add_attribute("code.namespace", "opentelemetry_sdk::benches::log");
218+
log_record.add_attribute("log.target", "opentelemetry_sdk::benches::log");
219219
logger.emit(log_record);
220220
});
221221

@@ -246,7 +246,7 @@ fn criterion_benchmark(c: &mut Criterion) {
246246
log_record.set_observed_timestamp(now);
247247
log_record.set_severity_number(Severity::Warn);
248248
log_record.set_severity_text(Severity::Warn.name().into());
249-
log_record.set_attributes(attributes.clone());
249+
log_record.add_attributes(attributes.clone());
250250
logger.emit(log_record);
251251
});
252252
}

opentelemetry-sdk/src/logs/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ mod tests {
3434
let mut log_record = logger.create_log_record();
3535
log_record.set_severity_number(Severity::Error);
3636
log_record.set_severity_text("Error".into());
37-
log_record.set_attributes(vec![
37+
log_record.add_attributes(vec![
3838
(Key::new("key1"), "value1".into()),
3939
(Key::new("key2"), "value2".into()),
4040
]);

opentelemetry-sdk/src/logs/record.rs

+4-48
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,6 @@ impl opentelemetry::logs::LogRecord for LogRecord {
4040
self.observed_timestamp = Some(timestamp);
4141
}
4242

43-
fn set_span_context(&mut self, span_context: &SpanContext) {
44-
self.trace_context = Some(TraceContext {
45-
span_id: span_context.span_id(),
46-
trace_id: span_context.trace_id(),
47-
trace_flags: Some(span_context.trace_flags()),
48-
});
49-
}
50-
5143
fn set_severity_text(&mut self, severity_text: Cow<'static, str>) {
5244
self.severity_text = Some(severity_text);
5345
}
@@ -60,11 +52,11 @@ impl opentelemetry::logs::LogRecord for LogRecord {
6052
self.body = Some(body);
6153
}
6254

63-
fn set_attributes(&mut self, attributes: Vec<(Key, AnyValue)>) {
55+
fn add_attributes(&mut self, attributes: Vec<(Key, AnyValue)>) {
6456
self.attributes = Some(attributes);
6557
}
6658

67-
fn set_attribute<K, V>(&mut self, key: K, value: V)
59+
fn add_attribute<K, V>(&mut self, key: K, value: V)
6860
where
6961
K: Into<Key>,
7062
V: Into<AnyValue>,
@@ -104,20 +96,9 @@ impl From<&SpanContext> for TraceContext {
10496
mod tests {
10597
use super::*;
10698
use opentelemetry::logs::{AnyValue, LogRecord as _, Severity};
107-
use opentelemetry::trace::{SpanContext, SpanId, TraceFlags, TraceId};
10899
use std::borrow::Cow;
109100
use std::time::SystemTime;
110101

111-
// Helper function to create a TraceId from a u128 number
112-
fn trace_id_from_u128(num: u128) -> TraceId {
113-
TraceId::from_bytes(num.to_be_bytes())
114-
}
115-
116-
// Helper function to create a SpanId from a u64 number
117-
fn span_id_from_u64(num: u64) -> SpanId {
118-
SpanId::from_bytes(num.to_be_bytes())
119-
}
120-
121102
#[test]
122103
fn test_set_timestamp() {
123104
let mut log_record = LogRecord::default();
@@ -134,31 +115,6 @@ mod tests {
134115
assert_eq!(log_record.observed_timestamp, Some(now));
135116
}
136117

137-
#[test]
138-
fn test_set_span_context() {
139-
let mut log_record = LogRecord::default();
140-
let span_context = SpanContext::new(
141-
trace_id_from_u128(123),
142-
span_id_from_u64(456),
143-
TraceFlags::default(),
144-
true,
145-
Default::default(),
146-
);
147-
log_record.set_span_context(&span_context);
148-
assert_eq!(
149-
log_record.trace_context.clone().unwrap().trace_id,
150-
span_context.trace_id()
151-
);
152-
assert_eq!(
153-
log_record.trace_context.clone().unwrap().span_id,
154-
span_context.span_id()
155-
);
156-
assert_eq!(
157-
log_record.trace_context.unwrap().trace_flags,
158-
Some(span_context.trace_flags())
159-
);
160-
}
161-
162118
#[test]
163119
fn test_set_severity_text() {
164120
let mut log_record = LogRecord::default();
@@ -187,14 +143,14 @@ mod tests {
187143
fn test_set_attributes() {
188144
let mut log_record = LogRecord::default();
189145
let attributes = vec![(Key::new("key"), AnyValue::String("value".into()))];
190-
log_record.set_attributes(attributes.clone());
146+
log_record.add_attributes(attributes.clone());
191147
assert_eq!(log_record.attributes, Some(attributes));
192148
}
193149

194150
#[test]
195151
fn test_set_attribute() {
196152
let mut log_record = LogRecord::default();
197-
log_record.set_attribute("key", "value");
153+
log_record.add_attribute("key", "value");
198154
assert_eq!(
199155
log_record.attributes,
200156
Some(vec![(Key::new("key"), AnyValue::String("value".into()))])

opentelemetry/CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@
2525
### Changed
2626

2727
- Deprecate `versioned_logger()` in favor of `logger_builder()` [1567](https://github.com/open-telemetry/opentelemetry-rust/pull/1567).
28+
- **BREAKING** Moving LogRecord implementation to the SDK. [1702](https://github.com/open-telemetry/opentelemetry-rust/pull/1702).
29+
- Relocated `LogRecord` struct to SDK.
30+
- Introduced the `LogRecord` trait in the API for populating log records. This trait is implemented by the SDK.
31+
This is the breaking change for the authors of Log Appenders. Refer to the [opentelemetry-appender-tracing](https://github.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry-appender-tracing) for more details.
2832

2933
Before:
3034

opentelemetry/src/logs/noop.rs

+2-11
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ use std::{borrow::Cow, sync::Arc, time::SystemTime};
22

33
use crate::{
44
logs::{AnyValue, LogRecord, Logger, LoggerProvider, Severity},
5-
trace::SpanContext,
65
InstrumentationLibrary, Key, KeyValue,
76
};
87

@@ -46,28 +45,20 @@ impl LogRecord for NoopLogRecord {
4645
#[inline]
4746
fn set_observed_timestamp(&mut self, _timestamp: SystemTime) {}
4847
#[inline]
49-
fn set_span_context(&mut self, _context: &SpanContext) {}
50-
#[inline]
5148
fn set_severity_text(&mut self, _text: Cow<'static, str>) {}
5249
#[inline]
5350
fn set_severity_number(&mut self, _number: Severity) {}
5451
#[inline]
5552
fn set_body(&mut self, _body: AnyValue) {}
5653
#[inline]
57-
fn set_attributes(&mut self, _attributes: Vec<(Key, AnyValue)>) {}
54+
fn add_attributes(&mut self, _attributes: Vec<(Key, AnyValue)>) {}
5855
#[inline]
59-
fn set_attribute<K, V>(&mut self, _key: K, _value: V)
56+
fn add_attribute<K, V>(&mut self, _key: K, _value: V)
6057
where
6158
K: Into<Key>,
6259
V: Into<AnyValue>,
6360
{
6461
}
65-
#[inline]
66-
fn set_context<T>(&mut self, _context: &T)
67-
where
68-
T: crate::trace::TraceContextExt,
69-
{
70-
}
7162
}
7263

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

opentelemetry/src/logs/record.rs

+5-22
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,14 @@
1-
use crate::{
2-
trace::{SpanContext, TraceContextExt},
3-
Array, Key, StringValue, Value,
4-
};
1+
use crate::{Array, Key, StringValue, Value};
52
use std::{borrow::Cow, collections::HashMap, time::SystemTime};
63

7-
/// Abstract interface for managing log records. The implementation is provided by the SDK
8-
/// Abstract interface for log records in an observability framework.
4+
/// SDK implemented trait for managing log records
95
pub trait LogRecord {
106
/// Sets the time when the event occurred measured by the origin clock, i.e. the time at the source.
117
fn set_timestamp(&mut self, timestamp: SystemTime);
128

139
/// Sets the observed event timestamp.
1410
fn set_observed_timestamp(&mut self, timestamp: SystemTime);
1511

16-
/// Associates a span context.
17-
fn set_span_context(&mut self, context: &SpanContext);
18-
1912
/// Sets severity as text.
2013
fn set_severity_text(&mut self, text: Cow<'static, str>);
2114

@@ -26,23 +19,13 @@ pub trait LogRecord {
2619
fn set_body(&mut self, body: AnyValue);
2720

2821
/// Adds multiple attributes.
29-
fn set_attributes(&mut self, attributes: Vec<(Key, AnyValue)>);
22+
fn add_attributes(&mut self, attributes: Vec<(Key, AnyValue)>);
3023

31-
/// Adds or updates a single attribute.
32-
fn set_attribute<K, V>(&mut self, key: K, value: V)
24+
/// Adds a single attribute.
25+
fn add_attribute<K, V>(&mut self, key: K, value: V)
3326
where
3427
K: Into<Key>,
3528
V: Into<AnyValue>;
36-
37-
/// Sets the trace context, pulling from the active span if available.
38-
fn set_context<T>(&mut self, context: &T)
39-
where
40-
T: TraceContextExt,
41-
{
42-
if context.has_active_span() {
43-
self.set_span_context(context.span().span_context())
44-
}
45-
}
4629
}
4730

4831
/// Value types for representing arbitrary values in a log record.

0 commit comments

Comments
 (0)