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