6个版本
0.1.0-alpha.6 | 2022年7月10日 |
---|---|
0.1.0-alpha.5 | 2022年7月9日 |
0.1.0-alpha.4 | 2022年7月6日 |
0.1.0-alpha.3 | 2022年7月2日 |
0.1.0-alpha.1 | 2021年2月13日 |
在 调试 中排名第 729
每月下载量 26
26KB
333 代码行
深受 Tracing Bunyan Formatter 启发,只是对内部结构和格式做了一些小的调整。实际的格式化不遵循任何定义的规范,这只是我认为可读且有用的东西 - 如果人们希望它遵循特定的格式,我持开放态度。
功能
- 所有跟踪都会接收到其父级的属性以及自己的属性,如果发生冲突,子级属性将具有优先级
- 有一个非常基础的计时能力,将经过的时间添加到
EVENT
和EXIT
跟踪中 TRACE
、DEBUG
和ERROR
日志附加了一些额外的元数据 (文件名、行号、模块路径 & 目标)- 避免恐慌 - 尽可能地通过
eprintln
将失败输出到stdout
。这些场景应该是少数,但最好是在您的跟踪实现中失败不会污染您的应用程序。 (尽管理想情况下它不应该静默失败)
所有跟踪都会接收到其父级的属性以及自己的属性,还有一个非常基础的计时能力,将经过的时间添加到 Event
和 Exit
跟踪中
基本示例
请参阅 /examples
以查看更复杂的示例
use tracing::{subscriber::set_global_default, Subscriber};
use tracing_sprout::TrunkLayer;
use tracing_subscriber::prelude::*;
use tracing_subscriber::{EnvFilter, Registry};
let env_filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info"));
let formatting_layer = TrunkLayer::new("My Application".to_string(), env!("CARGO_PKG_VERSION").to_string(), std::io::stdout);
let subscriber = Registry::default()
.with(env_filter)
.with(formatting_layer);
set_global_default(subscriber).expect("failed to set up global tracing subscriber")
示例输出
原始JSON
{"name":"I'm Groot","version":"0.1.0-alpha.1","id":"1","time":"Sat, 02 Jul 2022 09:33:59 -0600","msg":"[EPIC MONTAGE | START]","level":"info","span_type":"enter"}
{"name":"I'm Groot","version":"0.1.0-alpha.1","id":"1","group":["Peter Quill","Gamora","Drax","Rocket"],"time":"Sat, 02 Jul 2022 09:33:59 -0600","msg":"[EVENT] Trying to plug in the power","level":"trace","file":"examples/basic.rs","line":32,"target":"basic","thread_id":"ThreadId(1)","thread_name":"main","span_type":"event"}
{"name":"I'm Groot","version":"0.1.0-alpha.1","id":"2","info":"I'm overwriting my parents ID","time":"Sat, 02 Jul 2022 09:33:59 -0600","msg":"[MUSIC IS PLAYING | START]","level":"debug","file":"examples/basic.rs","line":34,"target":"basic","thread_id":"ThreadId(1)","thread_name":"main","span_type":"enter"}
通过CLI工具处理
在这种情况下,使用的CLI工具是 pino-pretty
[Sat, 02 Jul 2022 09:34:55 -0600] INFO (I'm Groot): [EPIC MONTAGE | STA
version: "0.1.0-alpha.1"
id: "1"
span_type: "enter"
[Sat, 02 Jul 2022 09:34:55 -0600] TRACE (I'm Groot): [EVENT] Trying to
version: "0.1.0-alpha.1"
id: "1"
group: [
"Peter Quill",
"Gamora",
"Drax",
"Rocket"
]
file: "examples/basic.rs"
line: 32
target: "basic"
thread_id: "ThreadId(1)"
thread_name: "main"
span_type: "event"
[Sat, 02 Jul 2022 09:34:55 -0600] DEBUG (I'm Groot): [MUSIC IS PLAYING | START]
version: "0.1.0-alpha.1"
id: "2"
info: "I'm overwriting my parents ID"
file: "examples/basic.rs"
line: 34
target: "basic"
thread_id: "ThreadId(1)"
thread_name: "main"
span_type: "enter"
[Sat, 02 Jul 2022 09:34:55 -0600] INFO (I'm Groot): [DANCE | START]
version: "0.1.0-alpha.1"
id: "2"
info: "I'm overwriting my parents ID"
span_type: "enter"
依赖关系
~2.8–4MB
~65K SLoC