chore: Prepare for opentelemetry-appender-tracing 0.30.1 - bump tracing-opentelemetry to 0.31 (#3022)
This commit is contained in:
parent
51dc2f04b7
commit
1f0d9a9f62
|
@ -74,7 +74,7 @@ sysinfo = "0.32"
|
|||
tempfile = "3.3.0"
|
||||
testcontainers = "0.23.1"
|
||||
tracing-log = "0.2"
|
||||
tracing-opentelemetry = "0.30"
|
||||
tracing-opentelemetry = "0.31"
|
||||
typed-builder = "0.20"
|
||||
uuid = "1.3"
|
||||
|
||||
|
|
|
@ -2,6 +2,12 @@
|
|||
|
||||
## vNext
|
||||
|
||||
## 0.30.1
|
||||
|
||||
Released 2025-June-05
|
||||
|
||||
- Bump `tracing-opentelemetry` to 0.31
|
||||
|
||||
## 0.30.0
|
||||
|
||||
Released 2025-May-23
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "opentelemetry-appender-tracing"
|
||||
version = "0.30.0"
|
||||
version = "0.30.1"
|
||||
edition = "2021"
|
||||
description = "An OpenTelemetry log appender for the tracing crate"
|
||||
homepage = "https://github.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry-appender-tracing"
|
||||
|
@ -18,7 +18,7 @@ tracing = { workspace = true, features = ["std"]}
|
|||
tracing-core = { workspace = true }
|
||||
tracing-log = { workspace = true, optional = true }
|
||||
tracing-subscriber = { workspace = true, features = ["registry", "std"] }
|
||||
# tracing-opentelemetry = { workspace = true, optional = true }
|
||||
tracing-opentelemetry = { workspace = true, optional = true }
|
||||
|
||||
[dev-dependencies]
|
||||
log = { workspace = true }
|
||||
|
@ -37,8 +37,7 @@ pprof = { version = "0.14", features = ["flamegraph", "criterion"] }
|
|||
default = []
|
||||
experimental_metadata_attributes = ["dep:tracing-log"]
|
||||
spec_unstable_logs_enabled = ["opentelemetry/spec_unstable_logs_enabled"]
|
||||
# TODO: Enable this back in 0.30.1 after tracing-opentelemetry is released
|
||||
# experimental_use_tracing_span_context = ["tracing-opentelemetry"]
|
||||
experimental_use_tracing_span_context = ["tracing-opentelemetry"]
|
||||
|
||||
|
||||
[[bench]]
|
||||
|
|
|
@ -244,28 +244,28 @@ where
|
|||
// Visit fields.
|
||||
event.record(&mut visitor);
|
||||
|
||||
// #[cfg(feature = "experimental_use_tracing_span_context")]
|
||||
// if let Some(span) = _ctx.event_span(event) {
|
||||
// use opentelemetry::trace::TraceContextExt;
|
||||
// use tracing_opentelemetry::OtelData;
|
||||
// if let Some(otd) = span.extensions().get::<OtelData>() {
|
||||
// if let Some(span_id) = otd.builder.span_id {
|
||||
// let opt_trace_id = if otd.parent_cx.has_active_span() {
|
||||
// Some(otd.parent_cx.span().span_context().trace_id())
|
||||
// } else {
|
||||
// span.scope().last().and_then(|root_span| {
|
||||
// root_span
|
||||
// .extensions()
|
||||
// .get::<OtelData>()
|
||||
// .and_then(|otd| otd.builder.trace_id)
|
||||
// })
|
||||
// };
|
||||
// if let Some(trace_id) = opt_trace_id {
|
||||
// log_record.set_trace_context(trace_id, span_id, None);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
#[cfg(feature = "experimental_use_tracing_span_context")]
|
||||
if let Some(span) = _ctx.event_span(event) {
|
||||
use opentelemetry::trace::TraceContextExt;
|
||||
use tracing_opentelemetry::OtelData;
|
||||
if let Some(otd) = span.extensions().get::<OtelData>() {
|
||||
if let Some(span_id) = otd.builder.span_id {
|
||||
let opt_trace_id = if otd.parent_cx.has_active_span() {
|
||||
Some(otd.parent_cx.span().span_context().trace_id())
|
||||
} else {
|
||||
span.scope().last().and_then(|root_span| {
|
||||
root_span
|
||||
.extensions()
|
||||
.get::<OtelData>()
|
||||
.and_then(|otd| otd.builder.trace_id)
|
||||
})
|
||||
};
|
||||
if let Some(trace_id) = opt_trace_id {
|
||||
log_record.set_trace_context(trace_id, span_id, None);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//emit record
|
||||
self.logger.emit(log_record);
|
||||
|
@ -611,117 +611,117 @@ mod tests {
|
|||
}
|
||||
}
|
||||
|
||||
// #[cfg(feature = "experimental_use_tracing_span_context")]
|
||||
// #[test]
|
||||
// fn tracing_appender_inside_tracing_crate_context() {
|
||||
// use opentelemetry::{trace::SpanContext, Context, SpanId, TraceId};
|
||||
// use opentelemetry_sdk::trace::InMemorySpanExporterBuilder;
|
||||
// use tracing_opentelemetry::OpenTelemetrySpanExt;
|
||||
#[cfg(feature = "experimental_use_tracing_span_context")]
|
||||
#[test]
|
||||
fn tracing_appender_inside_tracing_crate_context() {
|
||||
use opentelemetry::{trace::SpanContext, Context, SpanId, TraceId};
|
||||
use opentelemetry_sdk::trace::InMemorySpanExporterBuilder;
|
||||
use tracing_opentelemetry::OpenTelemetrySpanExt;
|
||||
|
||||
// // Arrange
|
||||
// let exporter: InMemoryLogExporter = InMemoryLogExporter::default();
|
||||
// let logger_provider = SdkLoggerProvider::builder()
|
||||
// .with_simple_exporter(exporter.clone())
|
||||
// .build();
|
||||
// Arrange
|
||||
let exporter: InMemoryLogExporter = InMemoryLogExporter::default();
|
||||
let logger_provider = SdkLoggerProvider::builder()
|
||||
.with_simple_exporter(exporter.clone())
|
||||
.build();
|
||||
|
||||
// // setup tracing layer to compare trace/span IDs against
|
||||
// let span_exporter = InMemorySpanExporterBuilder::new().build();
|
||||
// let tracer_provider = SdkTracerProvider::builder()
|
||||
// .with_simple_exporter(span_exporter.clone())
|
||||
// .build();
|
||||
// let tracer = tracer_provider.tracer("test-tracer");
|
||||
// setup tracing layer to compare trace/span IDs against
|
||||
let span_exporter = InMemorySpanExporterBuilder::new().build();
|
||||
let tracer_provider = SdkTracerProvider::builder()
|
||||
.with_simple_exporter(span_exporter.clone())
|
||||
.build();
|
||||
let tracer = tracer_provider.tracer("test-tracer");
|
||||
|
||||
// let level_filter = tracing_subscriber::filter::LevelFilter::ERROR;
|
||||
// let log_layer =
|
||||
// layer::OpenTelemetryTracingBridge::new(&logger_provider).with_filter(level_filter);
|
||||
let level_filter = tracing_subscriber::filter::LevelFilter::ERROR;
|
||||
let log_layer =
|
||||
layer::OpenTelemetryTracingBridge::new(&logger_provider).with_filter(level_filter);
|
||||
|
||||
// let subscriber = tracing_subscriber::registry()
|
||||
// .with(log_layer)
|
||||
// .with(tracing_opentelemetry::layer().with_tracer(tracer));
|
||||
let subscriber = tracing_subscriber::registry()
|
||||
.with(log_layer)
|
||||
.with(tracing_opentelemetry::layer().with_tracer(tracer));
|
||||
|
||||
// // Avoiding global subscriber.init() as that does not play well with unit tests.
|
||||
// let _guard = tracing::subscriber::set_default(subscriber);
|
||||
// Avoiding global subscriber.init() as that does not play well with unit tests.
|
||||
let _guard = tracing::subscriber::set_default(subscriber);
|
||||
|
||||
// // Act
|
||||
// tracing::error_span!("outer-span").in_scope(|| {
|
||||
// error!("first-event");
|
||||
// Act
|
||||
tracing::error_span!("outer-span").in_scope(|| {
|
||||
error!("first-event");
|
||||
|
||||
// tracing::error_span!("inner-span").in_scope(|| {
|
||||
// error!("second-event");
|
||||
// });
|
||||
// });
|
||||
tracing::error_span!("inner-span").in_scope(|| {
|
||||
error!("second-event");
|
||||
});
|
||||
});
|
||||
|
||||
// assert!(logger_provider.force_flush().is_ok());
|
||||
assert!(logger_provider.force_flush().is_ok());
|
||||
|
||||
// let logs = exporter.get_emitted_logs().expect("No emitted logs");
|
||||
// assert_eq!(logs.len(), 2, "Expected 2 logs, got: {logs:?}");
|
||||
let logs = exporter.get_emitted_logs().expect("No emitted logs");
|
||||
assert_eq!(logs.len(), 2, "Expected 2 logs, got: {logs:?}");
|
||||
|
||||
// let spans = span_exporter.get_finished_spans().unwrap();
|
||||
// assert_eq!(spans.len(), 2);
|
||||
let spans = span_exporter.get_finished_spans().unwrap();
|
||||
assert_eq!(spans.len(), 2);
|
||||
|
||||
// let trace_id = spans[0].span_context.trace_id();
|
||||
// assert_eq!(trace_id, spans[1].span_context.trace_id());
|
||||
// let inner_span_id = spans[0].span_context.span_id();
|
||||
// let outer_span_id = spans[1].span_context.span_id();
|
||||
// assert_eq!(outer_span_id, spans[0].parent_span_id);
|
||||
let trace_id = spans[0].span_context.trace_id();
|
||||
assert_eq!(trace_id, spans[1].span_context.trace_id());
|
||||
let inner_span_id = spans[0].span_context.span_id();
|
||||
let outer_span_id = spans[1].span_context.span_id();
|
||||
assert_eq!(outer_span_id, spans[0].parent_span_id);
|
||||
|
||||
// let trace_ctx0 = logs[0].record.trace_context().unwrap();
|
||||
// let trace_ctx1 = logs[1].record.trace_context().unwrap();
|
||||
let trace_ctx0 = logs[0].record.trace_context().unwrap();
|
||||
let trace_ctx1 = logs[1].record.trace_context().unwrap();
|
||||
|
||||
// assert_eq!(trace_ctx0.trace_id, trace_id);
|
||||
// assert_eq!(trace_ctx1.trace_id, trace_id);
|
||||
// assert_eq!(trace_ctx0.span_id, outer_span_id);
|
||||
// assert_eq!(trace_ctx1.span_id, inner_span_id);
|
||||
assert_eq!(trace_ctx0.trace_id, trace_id);
|
||||
assert_eq!(trace_ctx1.trace_id, trace_id);
|
||||
assert_eq!(trace_ctx0.span_id, outer_span_id);
|
||||
assert_eq!(trace_ctx1.span_id, inner_span_id);
|
||||
|
||||
// // Set context from remote.
|
||||
// let remote_trace_id = TraceId::from_u128(233);
|
||||
// let remote_span_id = SpanId::from_u64(2333);
|
||||
// let remote_span_context = SpanContext::new(
|
||||
// remote_trace_id,
|
||||
// remote_span_id,
|
||||
// TraceFlags::SAMPLED,
|
||||
// true,
|
||||
// Default::default(),
|
||||
// );
|
||||
// Set context from remote.
|
||||
let remote_trace_id = TraceId::from_u128(233);
|
||||
let remote_span_id = SpanId::from_u64(2333);
|
||||
let remote_span_context = SpanContext::new(
|
||||
remote_trace_id,
|
||||
remote_span_id,
|
||||
TraceFlags::SAMPLED,
|
||||
true,
|
||||
Default::default(),
|
||||
);
|
||||
|
||||
// // Act again.
|
||||
// tracing::error_span!("outer-span").in_scope(|| {
|
||||
// let span = tracing::Span::current();
|
||||
// let parent_context = Context::current().with_remote_span_context(remote_span_context);
|
||||
// span.set_parent(parent_context);
|
||||
// Act again.
|
||||
tracing::error_span!("outer-span").in_scope(|| {
|
||||
let span = tracing::Span::current();
|
||||
let parent_context = Context::current().with_remote_span_context(remote_span_context);
|
||||
span.set_parent(parent_context);
|
||||
|
||||
// error!("first-event");
|
||||
error!("first-event");
|
||||
|
||||
// tracing::error_span!("inner-span").in_scope(|| {
|
||||
// error!("second-event");
|
||||
// });
|
||||
// });
|
||||
tracing::error_span!("inner-span").in_scope(|| {
|
||||
error!("second-event");
|
||||
});
|
||||
});
|
||||
|
||||
// assert!(logger_provider.force_flush().is_ok());
|
||||
assert!(logger_provider.force_flush().is_ok());
|
||||
|
||||
// let logs = exporter.get_emitted_logs().expect("No emitted logs");
|
||||
// assert_eq!(logs.len(), 4, "Expected 4 logs, got: {logs:?}");
|
||||
// let logs = &logs[2..];
|
||||
let logs = exporter.get_emitted_logs().expect("No emitted logs");
|
||||
assert_eq!(logs.len(), 4, "Expected 4 logs, got: {logs:?}");
|
||||
let logs = &logs[2..];
|
||||
|
||||
// let spans = span_exporter.get_finished_spans().unwrap();
|
||||
// assert_eq!(spans.len(), 4);
|
||||
// let spans = &spans[2..];
|
||||
let spans = span_exporter.get_finished_spans().unwrap();
|
||||
assert_eq!(spans.len(), 4);
|
||||
let spans = &spans[2..];
|
||||
|
||||
// let trace_id = spans[0].span_context.trace_id();
|
||||
// assert_eq!(trace_id, remote_trace_id);
|
||||
// assert_eq!(trace_id, spans[1].span_context.trace_id());
|
||||
// let inner_span_id = spans[0].span_context.span_id();
|
||||
// let outer_span_id = spans[1].span_context.span_id();
|
||||
// assert_eq!(outer_span_id, spans[0].parent_span_id);
|
||||
let trace_id = spans[0].span_context.trace_id();
|
||||
assert_eq!(trace_id, remote_trace_id);
|
||||
assert_eq!(trace_id, spans[1].span_context.trace_id());
|
||||
let inner_span_id = spans[0].span_context.span_id();
|
||||
let outer_span_id = spans[1].span_context.span_id();
|
||||
assert_eq!(outer_span_id, spans[0].parent_span_id);
|
||||
|
||||
// let trace_ctx0 = logs[0].record.trace_context().unwrap();
|
||||
// let trace_ctx1 = logs[1].record.trace_context().unwrap();
|
||||
let trace_ctx0 = logs[0].record.trace_context().unwrap();
|
||||
let trace_ctx1 = logs[1].record.trace_context().unwrap();
|
||||
|
||||
// assert_eq!(trace_ctx0.trace_id, trace_id);
|
||||
// assert_eq!(trace_ctx1.trace_id, trace_id);
|
||||
// assert_eq!(trace_ctx0.span_id, outer_span_id);
|
||||
// assert_eq!(trace_ctx1.span_id, inner_span_id);
|
||||
// }
|
||||
assert_eq!(trace_ctx0.trace_id, trace_id);
|
||||
assert_eq!(trace_ctx1.trace_id, trace_id);
|
||||
assert_eq!(trace_ctx0.span_id, outer_span_id);
|
||||
assert_eq!(trace_ctx1.span_id, inner_span_id);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn tracing_appender_standalone_with_tracing_log() {
|
||||
|
|
Loading…
Reference in New Issue