2019-08-14 02:52:43 +00:00
|
|
|
#![recursion_limit = "512"]
|
2021-03-25 19:30:15 +00:00
|
|
|
pub mod api_routes;
|
2020-07-10 18:15:41 +00:00
|
|
|
pub mod code_migrations;
|
2021-12-06 14:54:47 +00:00
|
|
|
pub mod root_span_builder;
|
2021-01-29 16:38:27 +00:00
|
|
|
pub mod scheduled_tasks;
|
2021-11-23 12:16:47 +00:00
|
|
|
|
|
|
|
use lemmy_utils::LemmyError;
|
2022-01-06 19:10:20 +00:00
|
|
|
use opentelemetry::{
|
|
|
|
sdk::{propagation::TraceContextPropagator, Resource},
|
|
|
|
KeyValue,
|
|
|
|
};
|
|
|
|
use opentelemetry_otlp::WithExportConfig;
|
2021-11-23 12:16:47 +00:00
|
|
|
use tracing::subscriber::set_global_default;
|
|
|
|
use tracing_error::ErrorLayer;
|
|
|
|
use tracing_log::LogTracer;
|
2021-12-06 14:54:47 +00:00
|
|
|
use tracing_subscriber::{layer::SubscriberExt, EnvFilter, Registry};
|
2021-11-23 12:16:47 +00:00
|
|
|
|
2022-01-06 19:10:20 +00:00
|
|
|
pub fn init_tracing(opentelemetry_url: Option<&str>) -> Result<(), LemmyError> {
|
2021-11-23 12:16:47 +00:00
|
|
|
LogTracer::init()?;
|
|
|
|
|
2022-01-06 19:10:20 +00:00
|
|
|
opentelemetry::global::set_text_map_propagator(TraceContextPropagator::new());
|
|
|
|
|
2021-11-23 12:16:47 +00:00
|
|
|
let env_filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info"));
|
2021-12-06 14:54:47 +00:00
|
|
|
let format_layer = tracing_subscriber::fmt::layer();
|
2021-11-23 12:16:47 +00:00
|
|
|
|
|
|
|
let subscriber = Registry::default()
|
|
|
|
.with(env_filter)
|
|
|
|
.with(format_layer)
|
|
|
|
.with(ErrorLayer::default());
|
|
|
|
|
2022-01-06 19:10:20 +00:00
|
|
|
if let Some(url) = opentelemetry_url {
|
|
|
|
let tracer = opentelemetry_otlp::new_pipeline()
|
|
|
|
.tracing()
|
|
|
|
.with_trace_config(
|
|
|
|
opentelemetry::sdk::trace::config()
|
|
|
|
.with_resource(Resource::new(vec![KeyValue::new("service.name", "lemmy")])),
|
|
|
|
)
|
|
|
|
.with_exporter(
|
|
|
|
opentelemetry_otlp::new_exporter()
|
|
|
|
.tonic()
|
|
|
|
.with_endpoint(url),
|
|
|
|
)
|
|
|
|
.install_batch(opentelemetry::runtime::Tokio)?;
|
|
|
|
|
|
|
|
let otel_layer = tracing_opentelemetry::layer().with_tracer(tracer);
|
|
|
|
|
|
|
|
let subscriber = subscriber.with(otel_layer);
|
|
|
|
|
|
|
|
set_global_default(subscriber)?;
|
|
|
|
} else {
|
|
|
|
set_global_default(subscriber)?;
|
|
|
|
}
|
2021-11-23 12:16:47 +00:00
|
|
|
|
|
|
|
Ok(())
|
|
|
|
}
|