rust MacOS统一日志与oslog板条箱

tzdcorbm  于 2023-03-02  发布在  Mac
关注(0)|答案(1)|浏览(165)

我想写信给苹果的统一日志macOS从 rust 。
我发现了oslog板条箱,这似乎是有希望的,我有以下代码到目前为止:

#[macro_use]
extern crate log;
use oslog::OsLogger;

fn main() {
    //env_logger::init();

    OsLogger::new("com.rust")
        //.level_filter(LevelFilter::Trace)
        .init()
        .unwrap();

    info!("starting up");
}

如果我使用带注解的env_logger,我可以看到日志显示在终端中,但使用OSLogger -在macOS上的www.example.com中没有显示任何内容Console.app,或者如果我像这样流式传输日志:

log stream --predicate 'subsystem == "com.rust"'

这里有人做过这个吗?也许我错过了一些明显的东西,还没有和铁 rust 打交道的经验。

nbysray5

nbysray51#

好的,所以有2个部分来解决这个问题,我在下面发布了完整的代码。
首先,你必须设置一个环境变量,在运行程序时启用日志记录。该值设置要应用的日志过滤级别:

$ RUST_LOG=trace ./myrustprogram

其次,在通过level_filter(...)创建oslog facade时,必须设置匹配的日志级别:

#[macro_use]
extern crate log;
use oslog::OsLogger;
use log::LevelFilter;

fn main() {
    OsLogger::new("com.rust")
        .level_filter(LevelFilter::Info)
        .init()
        .unwrap();

    info!("Hello from Rust: true");
    info!("Velocity: 2");
}

这将写入统一日志,并可通过macOS上的www.example.com进行观察Console.app

相关问题