我想捕获 Rust 跟踪中跨度的执行持续时间并将其作为指标发送。
我发现 fmt() 有助于打印这里提到的内容:How can I log spanuration with Rust Tracing?
我还尝试过这个关于创建层和实现 on_new_span() 和 on_event() 的示例。我还添加了 on_close() 来检查我们在这里获得了哪些元数据。我写的代码是:
use tracing::{info, info_span};
use tracing_subscriber::prelude::*;
mod custom_layer;
use custom_layer::CustomLayer;
fn main() {
tracing_subscriber::registry()
.with(CustomLayer)
.init();
let outer_span = info_span!("Outer", level = 0, other_field = tracing::field::Empty);
let _outer_entered = outer_span.enter();
outer_span.record("other_field", &7);
let inner_span = info_span!("inner", level = 1);
let _inner_entered = inner_span.enter();
info!(a_bool = true, answer = 42, message = "first example");
}
Run Code Online (Sandbox Code Playgroud)
自定义层.rs:
use std::collections::BTreeMap;
use …Run Code Online (Sandbox Code Playgroud)