将 rust 跟踪库与 daemonize 结合使用

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

我想将

tracing
库与 deamonize 一起使用。

考虑以下示例

use tracing::info;
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::{fmt, Registry};

fn main() {
    let file_appender = tracing_appender::rolling::never("/tmp", "test.log");
    let (non_blocking, _guard) = tracing_appender::non_blocking(file_appender);

    let subscriber = Registry::default().with(fmt::Layer::default().with_writer(non_blocking));
    tracing::subscriber::set_global_default(subscriber).unwrap();
    
    info!("Foo");
    daemonize::Daemonize::new().start().unwrap();
    info!("Bar");
}

“Foo”日志消息被写入日志文件,而

Daemonize
之后的“Bar”消息则不会。这怎么可能呢?它与
log
库配合使用。最终,我想使用
tracing_log
,这样就可以使用使用
log
的现有(异步)代码以及使用
tracing
的库。

rust daemon rust-tracing
1个回答
0
投票

来自 https://github.com/knsd/daemonize/blob/master/daemonize/src/lib.rs#L339 我知道父级将被杀死意味着

info!("Bar");
永远不会到达。以及“它与日志库一起使用”。可能使用单独的线程记录库,这样它就不会被杀死并且仍然可以工作。

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