我想将
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
的库。
来自 https://github.com/knsd/daemonize/blob/master/daemonize/src/lib.rs#L339 我知道父级将被杀死意味着
info!("Bar");
永远不会到达。以及“它与日志库一起使用”。可能使用单独的线程记录库,这样它就不会被杀死并且仍然可以工作。