diff --git a/opentelemetry/Cargo.toml b/opentelemetry/Cargo.toml index 75b6597a57..0a4ef72242 100644 --- a/opentelemetry/Cargo.toml +++ b/opentelemetry/Cargo.toml @@ -26,6 +26,7 @@ futures-sink = "0.3" once_cell = { workspace = true } pin-project-lite = { workspace = true, optional = true } thiserror = { workspace = true } +tracing = {workspace = true, optional = true} # optional for opentelemetry internal logging [target.'cfg(all(target_arch = "wasm32", not(target_os = "wasi")))'.dependencies] js-sys = "0.3.63" @@ -38,6 +39,7 @@ testing = ["trace", "metrics"] logs = [] logs_level_enabled = ["logs"] otel_unstable = [] +internal-logs = ["tracing"] [dev-dependencies] opentelemetry_sdk = { path = "../opentelemetry-sdk", features = ["logs_level_enabled"]} # for documentation tests diff --git a/opentelemetry/src/trace/context.rs b/opentelemetry/src/trace/context.rs index 681c7b2e0c..723a525f88 100644 --- a/opentelemetry/src/trace/context.rs +++ b/opentelemetry/src/trace/context.rs @@ -1,6 +1,6 @@ //! Context extensions for tracing use crate::{ - global, + global, otel_debug, trace::{Span, SpanContext, Status}, Context, ContextGuard, KeyValue, }; @@ -55,7 +55,13 @@ impl SpanRef<'_> { if let Some(ref inner) = self.0.inner { match inner.lock() { Ok(mut locked) => f(&mut locked), - Err(err) => global::handle_error(err), + Err(err) => { + otel_debug!( + name: "SpanRef.LockFailed", + message = "Failed to acquire lock for SpanRef: {:?}", + reason = format!("{:?}", err), + span_context = format!("{:?}", self.0.span_context)); + } } } }