|
1 | 1 | #![feature(async_fn_traits)] |
2 | 2 | #![feature(unboxed_closures)] |
3 | 3 |
|
| 4 | +#[cfg(feature = "telemetry")] |
| 5 | +#[global_allocator] |
| 6 | +static ALLOC: dhat::Alloc = dhat::Alloc; |
| 7 | + |
4 | 8 | mod command; |
5 | 9 | mod core; |
6 | 10 | mod plugin; |
@@ -53,38 +57,45 @@ enum Commands { |
53 | 57 | Info, |
54 | 58 | } |
55 | 59 |
|
56 | | -fn init_tracing() { |
| 60 | +#[tokio::main(flavor = "current_thread")] |
| 61 | +async fn main() -> anyhow::Result<()> { |
| 62 | + // 初始化日志 |
57 | 63 | let fmt_layer = tracing_subscriber::fmt::Layer::default() |
58 | 64 | .with_filter(tracing_subscriber::filter::LevelFilter::INFO); |
59 | 65 |
|
60 | 66 | #[cfg(not(feature = "telemetry"))] |
61 | 67 | let subscriber_builder = Registry::default().with(fmt_layer); |
62 | 68 |
|
63 | 69 | #[cfg(feature = "telemetry")] |
64 | | - let subscriber_builder = { |
| 70 | + let (subscriber_builder, _g1, _g2) = { |
65 | 71 | // console layer |
66 | 72 | let console_layer = console_subscriber::ConsoleLayer::builder() |
67 | 73 | .with_default_env() |
68 | 74 | .spawn(); |
69 | 75 |
|
| 76 | + // chrome layer |
| 77 | + let (chrome_layer, chrome_guard) = tracing_chrome::ChromeLayerBuilder::new().build(); |
| 78 | + |
70 | 79 | // flame layer |
71 | | - let flame_layer = tracing_flame::FlameLayer::with_file("flamegraph.folded") |
72 | | - .unwrap() |
73 | | - .0; |
74 | | - |
75 | | - Registry::default() |
76 | | - .with(fmt_layer) |
77 | | - .with(console_layer) |
78 | | - .with(flame_layer) |
| 80 | + let (flame_layer, flame_guard) = |
| 81 | + tracing_flame::FlameLayer::with_file("flamegraph.folded").unwrap(); |
| 82 | + |
| 83 | + ( |
| 84 | + Registry::default() |
| 85 | + .with(fmt_layer) |
| 86 | + .with(console_layer) |
| 87 | + .with(chrome_layer) |
| 88 | + .with(flame_layer), |
| 89 | + chrome_guard, |
| 90 | + flame_guard, |
| 91 | + ) |
79 | 92 | }; |
80 | 93 |
|
81 | 94 | subscriber_builder.init(); |
82 | | -} |
83 | 95 |
|
84 | | -#[tokio::main(flavor = "current_thread")] |
85 | | -async fn main() -> anyhow::Result<()> { |
86 | | - // 初始化日志 |
87 | | - init_tracing(); |
| 96 | + #[cfg(feature = "telemetry")] |
| 97 | + dhat::Profiler::new_heap(); |
| 98 | + |
88 | 99 | // 参数解析 |
89 | 100 | let cli = Cli::parse(); |
90 | 101 | // 尝试从当前目录获取配置文件 |
|
0 commit comments