[初学者:我不李姐]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,我不李姐;

一切皆自学
讨论数量: 1

我李姐了:

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");这个打印不出来的原因是: 没有 全局订阅者;

3周前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!