about summary refs log tree commit diff
path: root/tvix/tracing/src/lib.rs
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2024-06-14T11·10+0300
committerflokli <flokli@flokli.de>2024-06-14T19·33+0000
commit6b6a34065e050417e8aafab8915a2cee270cc09d (patch)
treef30975995e430586439897109221e38f9e70b159 /tvix/tracing/src/lib.rs
parentd25f047b9d12bab692e61f6bbdc4c8d673914f34 (diff)
feat(tvix/tracing): add tracing-tracy support r/8275
This introduces another feature flag, "tracy" to the `tvix-tracing` crate.

If enabled (not enabled by default), it'll add an additional layer
emitting packets in a format that https://github.com/wolfpld/tracy can
display.

I had to be a bit tricky with the combinatorial complexity when adding
this, but the resulting code still seems manageable.

Change-Id: Ica824496728fa276ceae3f7a9754be0166e6558f
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10952
Tested-by: BuildkiteCI
Reviewed-by: Simon Hauser <simon.hauser@helsinki-systems.de>
Reviewed-by: flokli <flokli@flokli.de>
Diffstat (limited to 'tvix/tracing/src/lib.rs')
-rw-r--r--tvix/tracing/src/lib.rs25
1 files changed, 23 insertions, 2 deletions
diff --git a/tvix/tracing/src/lib.rs b/tvix/tracing/src/lib.rs
index 36bd7cec10c0..08e100781073 100644
--- a/tvix/tracing/src/lib.rs
+++ b/tvix/tracing/src/lib.rs
@@ -13,6 +13,8 @@ use opentelemetry_sdk::{
     trace::BatchConfigBuilder,
     Resource,
 };
+#[cfg(feature = "tracy")]
+use tracing_tracy::TracyLayer;
 
 lazy_static! {
     pub static ref PB_PROGRESS_STYLE: ProgressStyle = ProgressStyle::with_template(
@@ -173,12 +175,31 @@ impl TracingBuilder {
                 let (tracer, tx) = gen_otlp_tracer(service_name.to_string());
                 // Create a tracing layer with the configured tracer
                 let layer = tracing_opentelemetry::layer().with_tracer(tracer);
-                subscriber.with(Some(layer)).try_init()?;
+
+                #[cfg(feature = "tracy")]
+                {
+                    subscriber
+                        .with(TracyLayer::default())
+                        .with(Some(layer))
+                        .try_init()?;
+                }
+
+                #[cfg(not(feature = "tracy"))]
+                {
+                    subscriber.with(Some(layer)).try_init()?;
+                }
                 return Ok(TracingHandle { tx: Some(tx) });
             }
         }
+        #[cfg(feature = "tracy")]
+        {
+            subscriber.with(TracyLayer::default()).try_init()?;
+        }
+        #[cfg(not(feature = "tracy"))]
+        {
+            subscriber.try_init()?;
+        }
 
-        subscriber.try_init()?;
         Ok(TracingHandle { tx: None })
     }
 }