diff --git a/sdgb-cli/src/main.rs b/sdgb-cli/src/main.rs index c44a129..27fa953 100644 --- a/sdgb-cli/src/main.rs +++ b/sdgb-cli/src/main.rs @@ -1,11 +1,14 @@ use std::{ io::stdout, - sync::atomic::{AtomicBool, Ordering}, + sync::{ + Arc, + atomic::{AtomicBool, Ordering}, + }, }; use nyquest_preset::nyquest::ClientBuilder; use palc::Parser; -use spdlog::{Level, LevelFilter::MoreSevereEqual}; +use spdlog::{Level, LevelFilter::MoreSevereEqual, sink::StdStreamSink, terminal_style::StyleMode}; use sdgb_api::{ all_net::QRCode, @@ -40,11 +43,20 @@ static EARLY_QUIT: AtomicBool = AtomicBool::new(false); async fn main() -> Result<(), Box> { nyquest_preset::register(); - if cfg!(debug_assertions) { - spdlog::default_logger().set_level_filter(MoreSevereEqual(Level::Debug)); - } else { - spdlog::default_logger().set_level_filter(MoreSevereEqual(Level::Info)); - } + let logger = spdlog::default_logger().fork_with(|log| { + log.set_level_filter(MoreSevereEqual(if cfg!(debug_assertions) { + Level::Debug + } else { + Level::Info + })); + let sink = StdStreamSink::builder() + .stderr() + .style_mode(StyleMode::Auto) + .build()?; + *log.sinks_mut() = vec![Arc::new(sink)]; + Ok(()) + })?; + spdlog::swap_default_logger(logger); ctrlc::set_handler(|| { if EARLY_QUIT.load(Ordering::Relaxed) {