init_log once

This commit is contained in:
rustdesk 2024-03-16 22:20:50 +08:00
parent fb12ee7f2a
commit 6cbbb6498f

@ -350,45 +350,48 @@ pub fn is_domain_port_str(id: &str) -> bool {
} }
pub fn init_log(_is_async: bool, _name: &str) -> Option<flexi_logger::LoggerHandle> { pub fn init_log(_is_async: bool, _name: &str) -> Option<flexi_logger::LoggerHandle> {
#[cfg(debug_assertions)] static INIT: std::sync::Once = std::sync::Once::new();
{ #[allow(unused_mut)]
use env_logger::*; let mut logger_holder: Option<flexi_logger::LoggerHandle> = None;
init_from_env(Env::default().filter_or(DEFAULT_FILTER_ENV, "info")); INIT.call_once(|| {
None #[cfg(debug_assertions)]
} {
#[cfg(not(debug_assertions))] use env_logger::*;
{ init_from_env(Env::default().filter_or(DEFAULT_FILTER_ENV, "info"));
// https://docs.rs/flexi_logger/latest/flexi_logger/error_info/index.html#write
// though async logger more efficient, but it also causes more problems, disable it for now
let mut logger_holder: Option<flexi_logger::LoggerHandle> = None;
let mut path = config::Config::log_path();
#[cfg(target_os = "android")]
if !config::Config::get_home().exists() {
return None;
} }
if !_name.is_empty() { #[cfg(not(debug_assertions))]
path.push(_name); {
// https://docs.rs/flexi_logger/latest/flexi_logger/error_info/index.html#write
// though async logger more efficient, but it also causes more problems, disable it for now
let mut path = config::Config::log_path();
#[cfg(target_os = "android")]
if !config::Config::get_home().exists() {
return;
}
if !_name.is_empty() {
path.push(_name);
}
use flexi_logger::*;
if let Ok(x) = Logger::try_with_env_or_str("debug") {
logger_holder = x
.log_to_file(FileSpec::default().directory(path))
.write_mode(if _is_async {
WriteMode::Async
} else {
WriteMode::Direct
})
.format(opt_format)
.rotate(
Criterion::Age(Age::Day),
Naming::Timestamps,
Cleanup::KeepLogFiles(6),
)
.start()
.ok();
}
} }
use flexi_logger::*; });
if let Ok(x) = Logger::try_with_env_or_str("debug") { logger_holder
logger_holder = x
.log_to_file(FileSpec::default().directory(path))
.write_mode(if _is_async {
WriteMode::Async
} else {
WriteMode::Direct
})
.format(opt_format)
.rotate(
Criterion::Age(Age::Day),
Naming::Timestamps,
Cleanup::KeepLogFiles(6),
)
.start()
.ok();
}
logger_holder
}
} }
#[cfg(test)] #[cfg(test)]