在 lib.rs 中运行一些代码来配置日志记录?

问题描述 投票:0回答:1

我找到了std::sync::Once。但据我所知,该示例中的代码似乎必须在函数内运行。如果我将示例代码放在函数之外,我会得到

75 | START.call_once(|| {
   |      ^ expected one of `!` or `::`

(……当然这些建议不适用)。

我想做的具体事情是在实用程序箱中配置日志记录。这个板条箱中的任何函数都可以首先被调用...目前我必须允许这些函数中的任何一个可能必须运行

config_logging

注意,我还发现日志记录配置似乎也是每个板条箱本地的。 IE。每个箱子都需要配置自己的日志记录。据我所知,可能有办法解决这个问题,但显然我不想向这个库箱中的每个函数传递额外的参数。

logging rust initialization libraries rust-crates
1个回答
0
投票

根据 Chayim Friedman 的建议。

我需要做的就是这样:

pub fn init(){
    match config_logging::configure_logging() {
        Ok(()) => (),
        Err(e) => {
            if ! e.to_string().contains("logging system was already initialized"){
                println!("\n\nWARNING. Logging does not appear to have been initialised.\nError was {e}\n\n");
            }
        }
    }
}

...在被调用的函数中,该函数位于其自己的本地

config_logging
板条箱中,我很确定如果调用板条箱的日志记录实际上已经配置,则以下行会引发错误:

log4rs::init_config(config)?;

...但是这个函数

init
必须从调用者箱中显式调用:必须显式“初始化”实用程序模块并不好。

© www.soinside.com 2019 - 2024. All rights reserved.