Skip to content

Commit efb0426

Browse files
committed
Use released versions + gate bethind tracing feature flag
1 parent e640051 commit efb0426

File tree

4 files changed

+44
-27
lines changed

4 files changed

+44
-27
lines changed

examples/tracing-grpc/Cargo.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ name = "grpc-client"
1414
path = "src/client.rs"
1515

1616
[dependencies]
17-
opentelemetry = { path = "../../opentelemetry" }
18-
opentelemetry_sdk = { path = "../../opentelemetry-sdk", features = ["rt-tokio"] }
19-
opentelemetry-jaeger = { path = "../../opentelemetry-jaeger", features = ["rt-tokio"] }
17+
opentelemetry = { version = "0.21" }
18+
opentelemetry_sdk = { version = "0.21", features = ["rt-tokio"] }
19+
opentelemetry-jaeger = { version = "0.20", features = ["rt-tokio"] }
2020
prost = "0.11"
2121
tokio = { version = "1.28", features = ["full"] }
2222
tonic = "0.9.2"

opentelemetry-appender-tracing/Cargo.toml

+5-4
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,18 @@ license = "Apache-2.0"
1111
rust-version = "1.65"
1212

1313
[dependencies]
14-
opentelemetry = { path = "../opentelemetry", features = ["logs"] }
15-
opentelemetry_sdk = { path = "../opentelemetry-sdk", features = ["logs"] }
14+
opentelemetry = { version = "0.21", features = ["logs"] }
15+
opentelemetry_sdk = { version = "0.21", features = ["logs"] }
1616
tracing = { version = "0.1", default-features = false, features = ["std"] }
17-
tracing-opentelemetry = "0.22"
17+
tracing-opentelemetry = { version = "0.22", optional = true }
1818
tracing-core = "0.1.31"
1919
tracing-subscriber = { version = "0.3.0", default-features = false, features = ["registry", "std"] }
2020
once_cell = "1.13.0"
2121

2222
[dev-dependencies]
23-
opentelemetry-stdout = { path = "../opentelemetry-stdout", features = ["logs"] }
23+
opentelemetry-stdout = { version = "0.2", features = ["logs"] }
2424

2525
[features]
2626
logs_level_enabled = ["opentelemetry/logs_level_enabled", "opentelemetry_sdk/logs_level_enabled"]
27+
tracing = ["tracing-opentelemetry"]
2728
default = ["logs_level_enabled"]

opentelemetry-appender-tracing/examples/basic.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use opentelemetry_sdk::{
66
logs::{Config, LoggerProvider},
77
Resource,
88
};
9-
use tracing::error;
9+
use tracing::{error, info, info_span};
1010
use tracing_subscriber::prelude::*;
1111

1212
fn main() {

opentelemetry-appender-tracing/src/layer.rs

+35-19
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
1-
use opentelemetry::{
2-
logs::{LogRecord, Logger, LoggerProvider, Severity, TraceContext},
3-
trace::{SpanContext, TraceFlags, TraceState},
4-
};
1+
use opentelemetry::logs::{LogRecord, Logger, LoggerProvider, Severity};
52
use std::borrow::Cow;
63
use tracing_core::{Level, Subscriber};
7-
use tracing_opentelemetry::OtelData;
84
use tracing_subscriber::{registry::LookupSpan, Layer};
95

106
const INSTRUMENTATION_LIBRARY_NAME: &str = "opentelemetry-appender-tracing";
@@ -98,26 +94,19 @@ where
9894
P: LoggerProvider<Logger = L> + Send + Sync + 'static,
9995
L: Logger + Send + Sync + 'static,
10096
{
101-
fn on_event(&self, event: &tracing::Event<'_>, ctx: tracing_subscriber::layer::Context<'_, S>) {
97+
fn on_event(
98+
&self,
99+
event: &tracing::Event<'_>,
100+
_ctx: tracing_subscriber::layer::Context<'_, S>,
101+
) {
102102
let meta = event.metadata();
103103
let mut log_record: LogRecord = LogRecord::default();
104104
log_record.severity_number = Some(severity_of_level(meta.level()));
105105
log_record.severity_text = Some(meta.level().to_string().into());
106106

107107
// Extract the trace_id & span_id from the opentelemetry extension.
108-
if let Some((trace_id, span_id)) = ctx.lookup_current().and_then(|span| {
109-
span.extensions()
110-
.get::<OtelData>()
111-
.and_then(|ext| ext.builder.trace_id.zip(ext.builder.span_id))
112-
}) {
113-
log_record.trace_context = Some(TraceContext::from(&SpanContext::new(
114-
trace_id,
115-
span_id,
116-
TraceFlags::default(),
117-
false,
118-
TraceState::default(),
119-
)));
120-
}
108+
#[cfg(feature = "tracing")]
109+
inject_trace_context(&mut log_record, &_ctx);
121110

122111
// add the `name` metadata to attributes
123112
// TBD - Propose this to be part of log_record metadata.
@@ -146,6 +135,33 @@ where
146135
}
147136
}
148137

138+
#[cfg(feature = "tracing")]
139+
fn inject_trace_context<S>(
140+
log_record: &mut LogRecord,
141+
ctx: &tracing_subscriber::layer::Context<'_, S>,
142+
) where
143+
S: Subscriber + for<'a> LookupSpan<'a>,
144+
{
145+
use opentelemetry::{
146+
logs::TraceContext,
147+
trace::{SpanContext, TraceFlags, TraceState},
148+
};
149+
150+
if let Some((trace_id, span_id)) = ctx.lookup_current().and_then(|span| {
151+
span.extensions()
152+
.get::<tracing_opentelemetry::OtelData>()
153+
.and_then(|ext| ext.builder.trace_id.zip(ext.builder.span_id))
154+
}) {
155+
log_record.trace_context = Some(TraceContext::from(&SpanContext::new(
156+
trace_id,
157+
span_id,
158+
TraceFlags::default(),
159+
false,
160+
TraceState::default(),
161+
)));
162+
}
163+
}
164+
149165
const fn severity_of_level(level: &Level) -> Severity {
150166
match *level {
151167
Level::TRACE => Severity::Trace,

0 commit comments

Comments
 (0)