Skip to content

Commit 511d820

Browse files
committed
Improve telemetry
1 parent 1ed14d3 commit 511d820

3 files changed

Lines changed: 123 additions & 18 deletions

File tree

Cargo.lock

Lines changed: 94 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,13 @@ zip = "8.0"
2828

2929
# Telemetry
3030
console-subscriber = { version = "0.5", optional = true }
31+
dhat = { version = "0.3", optional = true }
32+
tracing-chrome = { version = "0.7", optional = true }
3133
tracing-flame = { version = "0.2", optional = true }
3234

3335
[features]
3436
default = []
35-
telemetry = ["console-subscriber", "tracing-flame"]
37+
telemetry = ["console-subscriber", "tracing-chrome", "tracing-flame", "dhat"]
3638

3739
[profile.release]
3840
strip = true

src/main.rs

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
#![feature(async_fn_traits)]
22
#![feature(unboxed_closures)]
33

4+
#[cfg(feature = "telemetry")]
5+
#[global_allocator]
6+
static ALLOC: dhat::Alloc = dhat::Alloc;
7+
48
mod command;
59
mod core;
610
mod plugin;
@@ -53,38 +57,45 @@ enum Commands {
5357
Info,
5458
}
5559

56-
fn init_tracing() {
60+
#[tokio::main(flavor = "current_thread")]
61+
async fn main() -> anyhow::Result<()> {
62+
// 初始化日志
5763
let fmt_layer = tracing_subscriber::fmt::Layer::default()
5864
.with_filter(tracing_subscriber::filter::LevelFilter::INFO);
5965

6066
#[cfg(not(feature = "telemetry"))]
6167
let subscriber_builder = Registry::default().with(fmt_layer);
6268

6369
#[cfg(feature = "telemetry")]
64-
let subscriber_builder = {
70+
let (subscriber_builder, _g1, _g2) = {
6571
// console layer
6672
let console_layer = console_subscriber::ConsoleLayer::builder()
6773
.with_default_env()
6874
.spawn();
6975

76+
// chrome layer
77+
let (chrome_layer, chrome_guard) = tracing_chrome::ChromeLayerBuilder::new().build();
78+
7079
// 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+
)
7992
};
8093

8194
subscriber_builder.init();
82-
}
8395

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+
8899
// 参数解析
89100
let cli = Cli::parse();
90101
// 尝试从当前目录获取配置文件

0 commit comments

Comments
 (0)