aed*_*edm 12 rust rust-tracing
我使用跟踪,我只想查看我自己的调试事件。然而,我依赖的一些板条箱也有跟踪支持,它们会乱七八糟的事件流。因此,当我将详细程度增加到 时DEBUG,我会在日志中看到很多这样的内容:
2022-08-04T20:52:24.523161Z DEBUG hyper::proto::h1::io: flushed 1008 bytes
Run Code Online (Sandbox Code Playgroud)
我尝试通过在此类调用周围添加跨度来关闭这些事件:
let response = {
let span = tracing::info_span!("my_span");
let _guard = span.enter();
client
// set up the request
.send()
.await
};
Run Code Online (Sandbox Code Playgroud)
我预计这些第 3 方DEBUG事件会消失,因为跨度的详细程度为INFO。但他们留下了。Span 的文档对Span 的详细程度的真正含义有些了解,所以我的解释可能完全错误。
如何设置依赖包的详细级别,以便只有我自己的DEBUG事件出现在跟踪日志中?
我使用环境变量设置详细级别RUST_LOG=debug,并设置跟踪订阅者,如下所示:
tracing_subscriber::fmt::init();
Run Code Online (Sandbox Code Playgroud)
相关部分Cargo.toml:
tracing = "0.1.36"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
Run Code Online (Sandbox Code Playgroud)
kmd*_*eko 12
由于您在启用tracing_subscriber::fmt::init()该"env-filter"功能的情况下使用,因此它会从您的环境中读取数据,因此您已经拥有了根据您的喜好过滤日志所需的所有内容。
RUST_LOG您可以像这样简单地设置(为“mycrate”插入您自己的板条箱):
RUST_LOG=none,mycrate=debug
Run Code Online (Sandbox Code Playgroud)
这将禁用所有跟踪事件的日志记录,除非它们来自“mycrate”,如果它们处于 DEBUG 级别或更高级别,则会记录该事件。EnvFilter 您可以阅读指令文档以进行更多自定义。
| 归档时间: |
|
| 查看次数: |
5415 次 |
| 最近记录: |