swc_cli_impl/util/
trace.rs1use tracing_chrome::{ChromeLayerBuilder, FlushGuard};
2use tracing_subscriber::{
3 filter, prelude::__tracing_subscriber_SubscriberExt, util::SubscriberInitExt, Layer,
4};
5
6pub(crate) fn init_trace(out_file: &Option<String>) -> Option<FlushGuard> {
8 let mut layer = ChromeLayerBuilder::new().include_args(true);
9
10 if let Some(trace_out_file) = out_file {
11 layer = layer.file(trace_out_file.clone());
12 }
13
14 let (chrome_layer, guard) = layer.build();
15 tracing_subscriber::registry()
16 .with(chrome_layer.with_filter(filter::filter_fn(|metadata| {
17 !metadata.target().contains("cranelift") && !metadata.name().contains("log ")
18 })))
19 .try_init()
20 .expect("Should able to register trace");
21
22 Some(guard)
23}