Allow tracing level to be customized

Nathan Sobo created

Change summary

crates/collab/src/main.rs | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)

Detailed changes

crates/collab/src/main.rs 🔗

@@ -11,6 +11,7 @@ use std::{
     net::{SocketAddr, TcpListener},
     sync::Arc,
 };
+use tracing::metadata::LevelFilter;
 
 #[derive(Default, Deserialize)]
 pub struct Config {
@@ -19,6 +20,7 @@ pub struct Config {
     pub api_token: String,
     pub honeycomb_api_key: Option<String>,
     pub honeycomb_dataset: Option<String>,
+    pub trace_level: Option<String>,
 }
 
 pub struct AppState {
@@ -56,12 +58,6 @@ async fn main() -> Result<()> {
     init_tracing(&config);
     let state = AppState::new(&config).await?;
 
-    {
-        let root = tracing::span!(tracing::Level::TRACE, "testing_1", work_units = 2_i32);
-        let _enter = root.enter();
-        tracing::error!("test_error_1");
-    }
-
     let listener = TcpListener::bind(&format!("0.0.0.0:{}", config.http_port))
         .expect("failed to bind TCP listener");
 
@@ -124,6 +120,7 @@ impl std::fmt::Display for Error {
 pub fn init_tracing(config: &Config) -> Option<()> {
     use opentelemetry::KeyValue;
     use opentelemetry_otlp::WithExportConfig;
+    use std::str::FromStr;
     use tracing_opentelemetry::OpenTelemetryLayer;
     use tracing_subscriber::layer::SubscriberExt;
 
@@ -153,7 +150,15 @@ pub fn init_tracing(config: &Config) -> Option<()> {
 
     let subscriber = tracing_subscriber::Registry::default()
         .with(OpenTelemetryLayer::new(tracer))
-        .with(tracing_subscriber::fmt::layer());
+        .with(tracing_subscriber::fmt::layer())
+        .with(
+            config
+                .trace_level
+                .as_ref()
+                .map_or(LevelFilter::INFO, |level| {
+                    LevelFilter::from_str(level).unwrap()
+                }),
+        );
 
     tracing::subscriber::set_global_default(subscriber).unwrap();