Skip to content

Commit 260df21

Browse files
authored
Merge branch 'main' into appender-tracing-fix-trace-context
2 parents 50b549a + 8a4e5ca commit 260df21

File tree

6 files changed

+70
-27
lines changed

6 files changed

+70
-27
lines changed

opentelemetry-proto/src/transform/logs.rs

+25-1
Original file line numberDiff line numberDiff line change
@@ -221,15 +221,39 @@ pub mod tonic {
221221
mod tests {
222222
use crate::transform::common::tonic::ResourceAttributesWithSchema;
223223
use opentelemetry::logs::LogRecord as _;
224+
use opentelemetry::logs::Logger as _;
225+
use opentelemetry::logs::LoggerProvider as _;
224226
use opentelemetry::InstrumentationScope;
227+
use opentelemetry_sdk::logs::LogProcessor;
228+
use opentelemetry_sdk::logs::{LogResult, LoggerProvider};
225229
use opentelemetry_sdk::{logs::LogBatch, logs::LogRecord, Resource};
226230
use std::time::SystemTime;
227231

232+
#[derive(Debug)]
233+
struct MockProcessor;
234+
235+
impl LogProcessor for MockProcessor {
236+
fn emit(&self, _record: &mut LogRecord, _instrumentation: &InstrumentationScope) {}
237+
238+
fn force_flush(&self) -> LogResult<()> {
239+
Ok(())
240+
}
241+
242+
fn shutdown(&self) -> LogResult<()> {
243+
Ok(())
244+
}
245+
}
246+
228247
fn create_test_log_data(
229248
instrumentation_name: &str,
230249
_message: &str,
231250
) -> (LogRecord, InstrumentationScope) {
232-
let mut logrecord = LogRecord::default();
251+
let processor = MockProcessor {};
252+
let logger = LoggerProvider::builder()
253+
.with_log_processor(processor)
254+
.build()
255+
.logger("test");
256+
let mut logrecord = logger.create_log_record();
233257
logrecord.set_timestamp(SystemTime::now());
234258
logrecord.set_observed_timestamp(SystemTime::now());
235259
let instrumentation =

opentelemetry-sdk/CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,10 @@ limit.
282282
now:
283283
`opentelemetry_sdk::logs::{ExportResult, LogBatch, LogExporter};`
284284

285+
- *Breaking* `opentelemetry_sdk::LogRecord::default()` method is removed.
286+
The only way to create log record outside opentelemetry_sdk crate is using
287+
`Logger::create_log_record()` method.
288+
285289
- *Breaking*: Rename namespaces for InMemoryExporters. (The module is still under "testing" feature flag)
286290
before:
287291
`opentelemetry_sdk::testing::logs::{InMemoryLogExporter, InMemoryLogExporterBuilder};`

opentelemetry-sdk/src/logs/log_emitter.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ impl opentelemetry::logs::Logger for Logger {
293293
type LogRecord = LogRecord;
294294

295295
fn create_log_record(&self) -> Self::LogRecord {
296-
LogRecord::default()
296+
LogRecord::new()
297297
}
298298

299299
/// Emit a `LogRecord`.

opentelemetry-sdk/src/logs/log_processor.rs

+11-11
Original file line numberDiff line numberDiff line change
@@ -1079,7 +1079,7 @@ mod tests {
10791079
.build();
10801080
let processor = BatchLogProcessor::new(exporter.clone(), BatchConfig::default());
10811081

1082-
let mut record = LogRecord::default();
1082+
let mut record = LogRecord::new();
10831083
let instrumentation = InstrumentationScope::default();
10841084

10851085
processor.emit(&mut record, &instrumentation);
@@ -1097,7 +1097,7 @@ mod tests {
10971097
.build();
10981098
let processor = SimpleLogProcessor::new(exporter.clone());
10991099

1100-
let mut record: LogRecord = Default::default();
1100+
let mut record: LogRecord = LogRecord::new();
11011101
let instrumentation: InstrumentationScope = Default::default();
11021102

11031103
processor.emit(&mut record, &instrumentation);
@@ -1255,7 +1255,7 @@ mod tests {
12551255
let exporter = InMemoryLogExporterBuilder::default().build();
12561256
let processor = SimpleLogProcessor::new(exporter.clone());
12571257

1258-
let mut record: LogRecord = Default::default();
1258+
let mut record: LogRecord = LogRecord::new();
12591259
let instrumentation: InstrumentationScope = Default::default();
12601260

12611261
processor.emit(&mut record, &instrumentation);
@@ -1268,7 +1268,7 @@ mod tests {
12681268
let exporter = InMemoryLogExporterBuilder::default().build();
12691269
let processor = SimpleLogProcessor::new(exporter.clone());
12701270

1271-
let mut record: LogRecord = Default::default();
1271+
let mut record: LogRecord = LogRecord::new();
12721272
let instrumentation: InstrumentationScope = Default::default();
12731273

12741274
processor.emit(&mut record, &instrumentation);
@@ -1285,7 +1285,7 @@ mod tests {
12851285
for _ in 0..10 {
12861286
let processor_clone = Arc::clone(&processor);
12871287
let handle = tokio::spawn(async move {
1288-
let mut record: LogRecord = Default::default();
1288+
let mut record: LogRecord = LogRecord::new();
12891289
let instrumentation: InstrumentationScope = Default::default();
12901290
processor_clone.emit(&mut record, &instrumentation);
12911291
});
@@ -1304,7 +1304,7 @@ mod tests {
13041304
let exporter = InMemoryLogExporterBuilder::default().build();
13051305
let processor = SimpleLogProcessor::new(exporter.clone());
13061306

1307-
let mut record: LogRecord = Default::default();
1307+
let mut record: LogRecord = LogRecord::new();
13081308
let instrumentation: InstrumentationScope = Default::default();
13091309

13101310
processor.emit(&mut record, &instrumentation);
@@ -1356,7 +1356,7 @@ mod tests {
13561356
let exporter = LogExporterThatRequiresTokio::new();
13571357
let processor = SimpleLogProcessor::new(exporter.clone());
13581358

1359-
let mut record: LogRecord = Default::default();
1359+
let mut record: LogRecord = LogRecord::new();
13601360
let instrumentation: InstrumentationScope = Default::default();
13611361

13621362
// This will panic because an tokio async operation within exporter without a runtime.
@@ -1412,7 +1412,7 @@ mod tests {
14121412
for _ in 0..concurrent_emit {
14131413
let processor_clone = Arc::clone(&processor);
14141414
let handle = tokio::spawn(async move {
1415-
let mut record: LogRecord = Default::default();
1415+
let mut record: LogRecord = LogRecord::new();
14161416
let instrumentation: InstrumentationScope = Default::default();
14171417
processor_clone.emit(&mut record, &instrumentation);
14181418
});
@@ -1436,7 +1436,7 @@ mod tests {
14361436
let exporter = LogExporterThatRequiresTokio::new();
14371437
let processor = SimpleLogProcessor::new(exporter.clone());
14381438

1439-
let mut record: LogRecord = Default::default();
1439+
let mut record: LogRecord = LogRecord::new();
14401440
let instrumentation: InstrumentationScope = Default::default();
14411441

14421442
processor.emit(&mut record, &instrumentation);
@@ -1455,7 +1455,7 @@ mod tests {
14551455

14561456
let processor = SimpleLogProcessor::new(exporter.clone());
14571457

1458-
let mut record: LogRecord = Default::default();
1458+
let mut record: LogRecord = LogRecord::new();
14591459
let instrumentation: InstrumentationScope = Default::default();
14601460

14611461
processor.emit(&mut record, &instrumentation);
@@ -1475,7 +1475,7 @@ mod tests {
14751475

14761476
let processor = SimpleLogProcessor::new(exporter.clone());
14771477

1478-
let mut record: LogRecord = Default::default();
1478+
let mut record: LogRecord = LogRecord::new();
14791479
let instrumentation: InstrumentationScope = Default::default();
14801480

14811481
processor.emit(&mut record, &instrumentation);

opentelemetry-sdk/src/logs/log_processor_with_async_runtime.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -555,7 +555,7 @@ mod tests {
555555
let processor =
556556
BatchLogProcessor::new(exporter.clone(), BatchConfig::default(), runtime::Tokio);
557557

558-
let mut record = LogRecord::default();
558+
let mut record = LogRecord::new();
559559
let instrumentation = InstrumentationScope::default();
560560

561561
processor.emit(&mut record, &instrumentation);
@@ -817,7 +817,7 @@ mod tests {
817817
let processor =
818818
BatchLogProcessor::new(exporter.clone(), BatchConfig::default(), runtime::Tokio);
819819

820-
let mut record = LogRecord::default();
820+
let mut record = LogRecord::new();
821821
let instrumentation = InstrumentationScope::default();
822822

823823
processor.emit(&mut record, &instrumentation);

opentelemetry-sdk/src/logs/record.rs

+27-12
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const PREALLOCATED_ATTRIBUTE_CAPACITY: usize = 5;
1818
pub(crate) type LogRecordAttributes =
1919
GrowableArray<Option<(Key, AnyValue)>, PREALLOCATED_ATTRIBUTE_CAPACITY>;
2020

21-
#[derive(Debug, Default, Clone, PartialEq)]
21+
#[derive(Debug, Clone, PartialEq)]
2222
#[non_exhaustive]
2323
/// LogRecord represents all data carried by a log record, and
2424
/// is provided to `LogExporter`s as input.
@@ -118,6 +118,21 @@ impl opentelemetry::logs::LogRecord for LogRecord {
118118
}
119119

120120
impl LogRecord {
121+
/// Crate only default constructor
122+
pub(crate) fn new() -> Self {
123+
LogRecord {
124+
event_name: None,
125+
target: None,
126+
timestamp: None,
127+
observed_timestamp: None,
128+
trace_context: None,
129+
severity_text: None,
130+
severity_number: None,
131+
body: None,
132+
attributes: LogRecordAttributes::default(),
133+
}
134+
}
135+
121136
/// Returns the event name
122137
#[inline]
123138
pub fn event_name(&self) -> Option<&'static str> {
@@ -220,60 +235,60 @@ mod tests {
220235

221236
#[test]
222237
fn test_set_eventname() {
223-
let mut log_record = LogRecord::default();
238+
let mut log_record = LogRecord::new();
224239
log_record.set_event_name("test_event");
225240
assert_eq!(log_record.event_name, Some("test_event"));
226241
}
227242

228243
#[test]
229244
fn test_set_target() {
230-
let mut log_record = LogRecord::default();
245+
let mut log_record = LogRecord::new();
231246
log_record.set_target("foo::bar");
232247
assert_eq!(log_record.target, Some(Cow::Borrowed("foo::bar")));
233248
}
234249

235250
#[test]
236251
fn test_set_timestamp() {
237-
let mut log_record = LogRecord::default();
252+
let mut log_record = LogRecord::new();
238253
let now = SystemTime::now();
239254
log_record.set_timestamp(now);
240255
assert_eq!(log_record.timestamp, Some(now));
241256
}
242257

243258
#[test]
244259
fn test_set_observed_timestamp() {
245-
let mut log_record = LogRecord::default();
260+
let mut log_record = LogRecord::new();
246261
let now = SystemTime::now();
247262
log_record.set_observed_timestamp(now);
248263
assert_eq!(log_record.observed_timestamp, Some(now));
249264
}
250265

251266
#[test]
252267
fn test_set_severity_text() {
253-
let mut log_record = LogRecord::default();
268+
let mut log_record = LogRecord::new();
254269
log_record.set_severity_text("ERROR");
255270
assert_eq!(log_record.severity_text, Some("ERROR"));
256271
}
257272

258273
#[test]
259274
fn test_set_severity_number() {
260-
let mut log_record = LogRecord::default();
275+
let mut log_record = LogRecord::new();
261276
let severity_number = Severity::Error;
262277
log_record.set_severity_number(severity_number);
263278
assert_eq!(log_record.severity_number, Some(Severity::Error));
264279
}
265280

266281
#[test]
267282
fn test_set_body() {
268-
let mut log_record = LogRecord::default();
283+
let mut log_record = LogRecord::new();
269284
let body = AnyValue::String("Test body".into());
270285
log_record.set_body(body.clone());
271286
assert_eq!(log_record.body, Some(body));
272287
}
273288

274289
#[test]
275290
fn test_set_attributes() {
276-
let mut log_record = LogRecord::default();
291+
let mut log_record = LogRecord::new();
277292
let attributes = vec![(Key::new("key"), AnyValue::String("value".into()))];
278293
log_record.add_attributes(attributes.clone());
279294
for (key, value) in attributes {
@@ -283,7 +298,7 @@ mod tests {
283298

284299
#[test]
285300
fn test_set_attribute() {
286-
let mut log_record = LogRecord::default();
301+
let mut log_record = LogRecord::new();
287302
log_record.add_attribute("key", "value");
288303
let key = Key::new("key");
289304
let value = AnyValue::String("value".into());
@@ -344,12 +359,12 @@ mod tests {
344359
fn compare_log_record_target_borrowed_eq_owned() {
345360
let log_record_borrowed = LogRecord {
346361
event_name: Some("test_event"),
347-
..Default::default()
362+
..LogRecord::new()
348363
};
349364

350365
let log_record_owned = LogRecord {
351366
event_name: Some("test_event"),
352-
..Default::default()
367+
..LogRecord::new()
353368
};
354369

355370
assert_eq!(log_record_borrowed, log_record_owned);

0 commit comments

Comments
 (0)