gpt4 book ai didi

rust - 当多个日志记录目的地与 rust 跟踪库一起使用时,如何限制日志级别?

转载 作者:行者123 更新时间:2023-12-05 03:27:45 27 4
gpt4 key购买 nike

我有以下代码适用于我的 Rust 应用程序,用于将日志写入标准输出和滚动 json 文件。

    let appender = tracing_appender::rolling::hourly(app_log_path.clone(), "application.log");
let (non_blocking, _guard) = tracing_appender::non_blocking(appender);

let subscriber = tracing_subscriber::registry()
.with(fmt::Layer::new().with_writer(std::io::stdout).pretty())
.with(fmt::Layer::new().with_writer(non_blocking).json());

tracing::subscriber::set_global_default(subscriber).expect("Unable to set a global collector");

这可行,但会记录所有日志记录级别,包括详细的跟踪日志记录。我想将日志限制为仅信息级别,但不知道该怎么做。

根据它所说的跟踪文档:

fmt()
.with_max_level(Level::DEBUG)
.init();

但是,我在上面的代码中找不到可以添加 .with_max_level() 函数调用的地方。我尝试放置的每个地方都会出现不同的特征违规情况。例如

 the following trait bounds were not satisfied:
`tracing_subscriber::fmt::Layer<_, Pretty, Format<Pretty>, fn() -> std::io::Stdout {std::io::stdout}>: MakeWriter<'_>`
which is required by `tracing_subscriber::fmt::Layer<_, Pretty, Format<Pretty>, fn() -> std::io::Stdout {std::io::stdout}>: MakeWriterExt`
`&tracing_subscriber::fmt::Layer<_, Pretty, Format<Pretty>, fn() -> std::io::Stdout {std::io::stdout}>: MakeWriter<'_>`
which is required by `&tracing_subscriber::fmt::Layer<_, Pretty, Format<Pretty>, fn() -> std::io::Stdout {std::io::stdout}>: MakeWriterExt`
`&mut tracing_subscriber::fmt::Layer<_, Pretty, Format<Pretty>, fn() -> std::io::Stdout {std::io::stdout}>: MakeWriter<'_>`
which is required by `&mut tracing_subscriber::fmt::Layer<_, Pretty, Format<Pretty>, fn() -> std::io::Stdout {std::io::stdout}>: MakeWriterExt`

最佳答案

MakeWriterExt 提供了一个.with_max_level() 方法特征。它是在 writer makers 上调用的,在你的例子中是 stdoutnon_blocking

use tracing_subscriber::fmt::writer::MakeWriterExt;
// or
// tracing_subscriber::prelude::*;

let subscriber = tracing_subscriber::registry()
.with(fmt::Layer::new().with_writer(std::io::stdout.with_max_level(Level::INFO)).pretty())
.with(fmt::Layer::new().with_writer(non_blocking.with_max_level(Level::INFO)).json());

关于rust - 当多个日志记录目的地与 rust 跟踪库一起使用时,如何限制日志级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71403610/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com