在 log4rs 中检索记录器
Retrieve logger in log4rs
我是一名 C++ 开发人员并探索 Rust。我习惯了 log4cxx 库,并尝试在它的 Rust 对应 log4rs 中找到我的出路。
我创建了一个将 xml 解析为结构的库。日志记录是使用 log::
宏完成的,它提供了与实现无关的接口。
现在我将如何检索 log4rs 记录器并将其传递给对象。似乎所有的日志宏都使用根记录器,这首先破坏了使用 log4rs 的优势。
解决方案:
感谢@Jmb 的回答。这是我打算做的一个例子(板条箱名称:test_crate
):
在main.rs
// configure log4cxx logger
let stdout = ConsoleAppender::builder()
.encoder(Box::new(PatternEncoder::new("{d} - {m}{n}")))
.build();
let config = Config::builder()
.appender(Appender::builder().build("stdout", Box::new(stdout)))
.logger(Logger::builder().build("test_crate::my_module", LevelFilter::Trace))
.build(Root::builder().appender("stdout").build(LevelFilter::Warn))
.unwrap();
log4rs::init_config(config).unwrap();
并从 lib.rs
中的 my_module
模块中调用 log::...
宏
注意:理想情况下,应该在单独的日志记录配置文件中配置记录器,以便在运行时配置记录器。
默认情况下,日志宏为每个 Rust 模块使用不同的记录器:A target is a string which defaults to the module path of the location of the log request, though that default may be overridden.。你可以使用例如info!(target: "foo", "message");
以不同的记录器为目标。
我是一名 C++ 开发人员并探索 Rust。我习惯了 log4cxx 库,并尝试在它的 Rust 对应 log4rs 中找到我的出路。
我创建了一个将 xml 解析为结构的库。日志记录是使用 log::
宏完成的,它提供了与实现无关的接口。
现在我将如何检索 log4rs 记录器并将其传递给对象。似乎所有的日志宏都使用根记录器,这首先破坏了使用 log4rs 的优势。
解决方案:
感谢@Jmb 的回答。这是我打算做的一个例子(板条箱名称:test_crate
):
在main.rs
// configure log4cxx logger
let stdout = ConsoleAppender::builder()
.encoder(Box::new(PatternEncoder::new("{d} - {m}{n}")))
.build();
let config = Config::builder()
.appender(Appender::builder().build("stdout", Box::new(stdout)))
.logger(Logger::builder().build("test_crate::my_module", LevelFilter::Trace))
.build(Root::builder().appender("stdout").build(LevelFilter::Warn))
.unwrap();
log4rs::init_config(config).unwrap();
并从 lib.rs
my_module
模块中调用 log::...
宏
注意:理想情况下,应该在单独的日志记录配置文件中配置记录器,以便在运行时配置记录器。
默认情况下,日志宏为每个 Rust 模块使用不同的记录器:A target is a string which defaults to the module path of the location of the log request, though that default may be overridden.。你可以使用例如info!(target: "foo", "message");
以不同的记录器为目标。