tracing_opentelemetry_ext/
lib.rs1pub mod http;
2pub mod macros;
3pub mod masking;
4pub mod signal;
5pub mod tonic;
6use axum_tracing_opentelemetry::otlp::{identity, init_tracer};
7use opentelemetry::sdk::propagation::TraceContextPropagator;
8use opentelemetry::sdk::Resource;
9use opentelemetry::{global, KeyValue};
10pub use tower::ServiceBuilder;
11use tracing::subscriber::{set_global_default, SetGlobalDefaultError};
12use tracing_opentelemetry::layer;
13use tracing_subscriber::layer::SubscriberExt;
14use tracing_subscriber::{fmt, registry, EnvFilter};
15
16pub fn init_tracing(service_name: &String, environment_name: &String) -> Result<(), SetGlobalDefaultError> {
17 global::set_text_map_propagator(TraceContextPropagator::new());
19
20 let service_name = KeyValue::new("service.name", service_name.to_string());
21 let environment_name = KeyValue::new("deployment.environment", environment_name.to_string());
22 let otel_resource = Resource::new(vec![service_name, environment_name]);
23 let otel_tracer = init_tracer(otel_resource, identity).unwrap();
24 let otel_layer = layer().with_tracer(otel_tracer);
25 let otel_filter = EnvFilter::builder().from_env_lossy();
26 let otel_stdout = fmt::layer().pretty().compact().with_target(false);
27 let subscriber = registry().with(otel_filter).with(otel_stdout).with(otel_layer);
28
29 set_global_default(subscriber)
30}