|
|
|
|
@ -40,7 +40,7 @@ use tower_http::{
|
|
|
|
|
trace::TraceLayer, |
|
|
|
|
ServiceBuilderExt as _, |
|
|
|
|
}; |
|
|
|
|
use tracing::{info, warn}; |
|
|
|
|
use tracing::{error, info, warn}; |
|
|
|
|
use tracing_subscriber::{prelude::*, EnvFilter}; |
|
|
|
|
|
|
|
|
|
pub use conduit::*; // Re-export everything from the library crate
|
|
|
|
|
@ -68,27 +68,16 @@ async fn main() {
|
|
|
|
|
let config = match raw_config.extract::<Config>() { |
|
|
|
|
Ok(s) => s, |
|
|
|
|
Err(e) => { |
|
|
|
|
eprintln!("It looks like your config is invalid. The following error occured while parsing it: {}", e); |
|
|
|
|
eprintln!( |
|
|
|
|
"It looks like your config is invalid. The following error occurred: {}", |
|
|
|
|
e |
|
|
|
|
); |
|
|
|
|
std::process::exit(1); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
config.warn_deprecated(); |
|
|
|
|
|
|
|
|
|
if let Err(e) = KeyValueDatabase::load_or_create(config).await { |
|
|
|
|
eprintln!( |
|
|
|
|
"The database couldn't be loaded or created. The following error occured: {}", |
|
|
|
|
e |
|
|
|
|
); |
|
|
|
|
std::process::exit(1); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
let config = &services().globals.config; |
|
|
|
|
|
|
|
|
|
let start = async { |
|
|
|
|
run_server().await.unwrap(); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
if config.allow_jaeger { |
|
|
|
|
opentelemetry::global::set_text_map_propagator(opentelemetry_jaeger::Propagator::new()); |
|
|
|
|
let tracer = opentelemetry_jaeger::new_agent_pipeline() |
|
|
|
|
@ -113,35 +102,44 @@ async fn main() {
|
|
|
|
|
.with(filter_layer) |
|
|
|
|
.with(telemetry); |
|
|
|
|
tracing::subscriber::set_global_default(subscriber).unwrap(); |
|
|
|
|
start.await; |
|
|
|
|
println!("exporting remaining spans"); |
|
|
|
|
opentelemetry::global::shutdown_tracer_provider(); |
|
|
|
|
} else if config.tracing_flame { |
|
|
|
|
let registry = tracing_subscriber::Registry::default(); |
|
|
|
|
let (flame_layer, _guard) = |
|
|
|
|
tracing_flame::FlameLayer::with_file("./tracing.folded").unwrap(); |
|
|
|
|
let flame_layer = flame_layer.with_empty_samples(false); |
|
|
|
|
|
|
|
|
|
let filter_layer = EnvFilter::new("trace,h2=off"); |
|
|
|
|
|
|
|
|
|
let subscriber = registry.with(filter_layer).with(flame_layer); |
|
|
|
|
tracing::subscriber::set_global_default(subscriber).unwrap(); |
|
|
|
|
} else { |
|
|
|
|
let registry = tracing_subscriber::Registry::default(); |
|
|
|
|
if config.tracing_flame { |
|
|
|
|
let (flame_layer, _guard) = |
|
|
|
|
tracing_flame::FlameLayer::with_file("./tracing.folded").unwrap(); |
|
|
|
|
let flame_layer = flame_layer.with_empty_samples(false); |
|
|
|
|
|
|
|
|
|
let filter_layer = EnvFilter::new("trace,h2=off"); |
|
|
|
|
|
|
|
|
|
let subscriber = registry.with(filter_layer).with(flame_layer); |
|
|
|
|
tracing::subscriber::set_global_default(subscriber).unwrap(); |
|
|
|
|
start.await; |
|
|
|
|
} else { |
|
|
|
|
let fmt_layer = tracing_subscriber::fmt::Layer::new(); |
|
|
|
|
let filter_layer = match EnvFilter::try_new(&config.log) { |
|
|
|
|
Ok(s) => s, |
|
|
|
|
Err(e) => { |
|
|
|
|
eprintln!("It looks like your log config is invalid. The following error occurred: {}", e); |
|
|
|
|
EnvFilter::try_new("warn").unwrap() |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
let fmt_layer = tracing_subscriber::fmt::Layer::new(); |
|
|
|
|
let filter_layer = match EnvFilter::try_new(&config.log) { |
|
|
|
|
Ok(s) => s, |
|
|
|
|
Err(e) => { |
|
|
|
|
eprintln!("It looks like your config is invalid. The following error occured while parsing it: {}", e); |
|
|
|
|
EnvFilter::try_new("warn").unwrap() |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
let subscriber = registry.with(filter_layer).with(fmt_layer); |
|
|
|
|
tracing::subscriber::set_global_default(subscriber).unwrap(); |
|
|
|
|
start.await; |
|
|
|
|
} |
|
|
|
|
let subscriber = registry.with(filter_layer).with(fmt_layer); |
|
|
|
|
tracing::subscriber::set_global_default(subscriber).unwrap(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
info!("Loading database"); |
|
|
|
|
if let Err(error) = KeyValueDatabase::load_or_create(config).await { |
|
|
|
|
error!(?error, "The database couldn't be loaded or created"); |
|
|
|
|
|
|
|
|
|
std::process::exit(1); |
|
|
|
|
}; |
|
|
|
|
let config = &services().globals.config; |
|
|
|
|
|
|
|
|
|
info!("Starting server"); |
|
|
|
|
run_server().await.unwrap(); |
|
|
|
|
|
|
|
|
|
if config.allow_jaeger { |
|
|
|
|
opentelemetry::global::shutdown_tracer_provider(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|