[初学者:我不李姐]tracing要什么使用
let subscriber = tracing_subscriber::FmtSubscriber::builder()
// all spans/events with a level higher than TRACE (e.g, debug, info, warn, etc.)
// will be written to stdout.
.with_max_level(Level::TRACE)
// builds the subscriber.
.finish();
tracing::subscriber::with_default(subscriber, || {
info!("This will be logged to stdout");
});
info!("This will _not_ be logged to stdout");
为什么最后一个info!("This will _not_ be logged to stdout");
不可以打印?
那后面我要打印什么写?既然info!("This will _not_ be logged to stdout");
不可以
// a builder for `FmtSubscriber`.
let subscriber = FmtSubscriber::builder()
// all spans/events with a level higher than TRACE (e.g, debug, info, warn, etc.)
// will be written to stdout.
.with_max_level(Level::TRACE)
// completes the builder.
.finish();
tracing::subscriber::set_global_default(subscriber)
.expect("setting default subscriber failed");
相当于设置了一个全局的subscriber订阅者;
那tracing_subscriber::f mt::init();是什么?往后info!("This will _not_ be logged to stdout");
也不可以。
我要什么使用这个tracing crate
初学rust,我不李姐;
我李姐了:
tracing_subscriber::fmt::init();//默认打印级别error
tracing_subscriber::fmt().init(); //默认打印级别info
这两个都会设置一个全局的 订阅者; 也可以自定义:
tracing::subscriber::set_global_default(subscriber) .expect("setting default subscriber failed");
而:
tracing::subscriber::with_default(subscriber, || { info!("This will be logged to stdout"); });
这个的意思是 使用subscriber
自定义的订阅者覆盖全局的订阅者(如果有)打印"This will be logged to stdout"
;info!("This will _not_ be logged to stdout");
这个打印不出来的原因是: 没有 全局订阅者;