2个版本
0.0.2 | 2024年3月11日 |
---|---|
0.0.1 | 2023年11月29日 |
在 调试 中排名 #605
每月下载量 106
40KB
464 代码行
异步运行时仪表化订阅者
异步运行时仪表化订阅者 (ari-subscriber
) 是一个针对视觉调试Tokio跟踪仪表化进行了优化的 tracing-subscriber
。
此crate提供了一个 Layer
,它将 tracing
信息写入 stdout
。它为Tokio中跟踪仪表化产生的跟踪着色,以便于识别。
用法
以下示例将设置一个格式化 tracing_subscriber::Layer
,然后将其添加到注册表中。随后生成的任务的输出将显示在 stdout
中。
use tracing_subscriber::prelude::*;
#[tokio::main]
async fn main() {
let layer = ari_subscriber::layer();
tracing_subscriber::registry().with(layer).init();
tokio::spawn(async {
tokio::time::sleep(std::time::Duration::from_millis(100)).await;
})
.await
.unwrap();
}
一个常见的用例是使用 ari-subscriber
与 console-subscriber
一起,它将相同的Tokio跟踪仪表化聚合到Tokio控制台中进行可视化。
use tracing_subscriber::prelude::*;
#[tokio::main]
async fn main() {
let fmt_layer = ari_subscriber::layer();
let console_layer = console_subscriber::spawn();
tracing_subscriber::registry()
.with(fmt_layer)
.with(console_layer)
.init();
tokio::spawn(async {
tokio::time::sleep(std::time::Duration::from_millis(100)).await;
})
.await
.unwrap();
}
示例输出
上述程序的输出开头可能是
2023-11-28T10:06:44.746508Z TRACE runtime.spawn[1]{kind=task, task.name=, task.id=18, loc.file="examples/tokio-task.rs", loc.line=14, loc.col=5} new 2023-11-28T10:06:44.747110Z TRACE runtime.spawn[1]{kind=task, task.name=, task.id=18, loc.file="examples/tokio-task.rs", loc.line=14, loc.col=5} enter 2023-11-28T10:06:44.747340Z TRACE runtime.spawn[1]{kind=task, task.name=, task.id=18, loc.file="examples/tokio-task.rs", loc.line=14, loc.col=5} runtime.resource[274877906945]{concrete_type="Sleep", kind="timer", loc.file="examples/tokio-task.rs", loc.line=15, loc.col=9} new 2023-11-28T10:06:44.747539Z TRACE runtime.spawn[1]{kind=task, task.name=, task.id=18, loc.file="examples/tokio-task.rs", loc.line=14, loc.col=5} runtime.resource[274877906945]{concrete_type="Sleep", kind="timer", loc.file="examples/tokio-task.rs", loc.line=15, loc.col=9} enter 2023-11-28T10:06:44.747683Z TRACE runtime.spawn[1]{kind=task, task.name=, task.id=18, loc.file="examples/tokio-task.rs", loc.line=14, loc.col=5} runtime.resource[274877906945]{concrete_type="Sleep", kind="timer", loc.file="examples/tokio-task.rs", loc.line=15, loc.col=9} runtime::resource::state_update: duration=101, duration.unit="ms", duration.op="override" 2023-11-28T10:06:44.747854Z TRACE runtime.spawn[1]{kind=task, task.name=, task.id=18, loc.file="examples/tokio-task.rs", loc.line=14, loc.col=5} runtime.resource[274877906945]{concrete_type="Sleep", kind="timer", loc.file="examples/tokio-task.rs", loc.line=15, loc.col=9} runtime.resource.async_op[274877906946]{source="Sleep::new_timeout"} new 2023-11-28T10:06:44.747991Z TRACE runtime.spawn[1]{kind=task, task.name=, task.id=18, loc.file="examples/tokio-task.rs", loc.line=14, loc.col=5} runtime.resource[274877906945]{concrete_type="Sleep", kind="timer", loc.file="examples/tokio-task.rs", loc.line=15, loc.col=9} exit 2023-11-28T10:06:44.748118Z TRACE runtime.spawn[1]{kind=task, task.name=, task.id=18, loc.file="examples/tokio-task.rs", loc.line=14, loc.col=5} runtime.resource[274877906945]{concrete_type="Sleep", kind="timer", loc.file="examples/tokio-task.rs", loc.line=15, loc.col=9} runtime.resource.async_op[274877906946]{source="Sleep::new_timeout"} enter 2023-11-28T10:06:44.748196Z TRACE runtime.spawn[1]{kind=task, task.name=, task.id=18, loc.file="examples/tokio-task.rs", loc.line=14, loc.col=5} runtime.resource[274877906945]{concrete_type="Sleep", kind="timer", loc.file="examples/tokio-task.rs", loc.line=15, loc.col=9} runtime.resource.async_op[274877906946]{source="Sleep::new_timeout"} runtime.resource.async_op.poll[274877906947]{} new
与 tracing-subscriber
的比较
ari-subscriber
基于 tracing-subscriber
构建,并使用其注册表(如大多数 tracing
订阅者一样)。它提供了一种替代方案,用于该crate中的 fmt::Subscriber
和其底层的 fmt::Layer
。
如果您对使用哪种订阅者格式有疑问,请选择来自 tracing-subscriber
的格式。它更加灵活,毫无疑问,性能也更好。
您只有在有特定需求来可视化Tokio中内置的跟踪仪器时,才会使用 ari-subscriber
格式 Layer
。
支持的Rust版本
ari-subscriber
是基于最新的稳定版本构建的。最低支持的版本是1.65。目前 ari-subscriber
的版本不能保证在低于最低支持版本的Rust版本上构建。
许可证
本项目遵循 MIT许可证。
贡献
除非您明确声明,否则您提交的任何旨在包含在 ari-subscriber
中的贡献,都将按照MIT许可证授权,不附加任何额外条款或条件。
依赖
~2–12MB
~81K SLoC