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