use std::time::Duration;
use tracing_calltree::CallTree;
use tracing_subscriber::prelude::*;
#[tracing::instrument(skip_all)]
async fn request() {
load_context().await;
}
#[tracing::instrument(skip_all)]
async fn load_context() {
query_database().await;
}
#[tracing::instrument(skip_all)]
async fn query_database() {
tokio::time::sleep(Duration::from_millis(10)).await;
}
#[tokio::main(flavor = "current_thread")]
async fn main() {
let calltree = CallTree::new();
tracing_subscriber::registry().with(calltree.layer()).init();
for _ in 0..5 {
request().await;
}
println!("{}", calltree.snapshot().display());
}