1 #![recursion_limit = "512"]
3 pub mod code_migrations;
4 pub mod root_span_builder;
5 pub mod scheduled_tasks;
7 use console_subscriber::ConsoleLayer;
8 use lemmy_utils::LemmyError;
10 sdk::{propagation::TraceContextPropagator, Resource},
13 use opentelemetry_otlp::WithExportConfig;
14 use tracing::subscriber::set_global_default;
15 use tracing_error::ErrorLayer;
16 use tracing_log::LogTracer;
17 use tracing_subscriber::{filter::Targets, layer::SubscriberExt, Layer, Registry};
19 pub fn init_tracing(opentelemetry_url: Option<&str>) -> Result<(), LemmyError> {
22 opentelemetry::global::set_text_map_propagator(TraceContextPropagator::new());
24 let log_description = std::env::var("RUST_LOG").unwrap_or_else(|_| "info".into());
26 let targets = log_description
31 let format_layer = tracing_subscriber::fmt::layer().with_filter(targets.clone());
33 let console_layer = ConsoleLayer::builder()
35 .server_addr(([0, 0, 0, 0], 6669))
36 .event_buffer_capacity(1024 * 1024)
39 let subscriber = Registry::default()
41 .with(ErrorLayer::default())
44 if let Some(url) = opentelemetry_url {
45 let tracer = opentelemetry_otlp::new_pipeline()
48 opentelemetry::sdk::trace::config()
49 .with_resource(Resource::new(vec![KeyValue::new("service.name", "lemmy")])),
52 opentelemetry_otlp::new_exporter()
56 .install_batch(opentelemetry::runtime::Tokio)?;
58 let otel_layer = tracing_opentelemetry::layer()
60 .with_filter(targets);
62 let subscriber = subscriber.with(otel_layer);
64 set_global_default(subscriber)?;
66 set_global_default(subscriber)?;