From f356201323d0b98572dc81e575f7c7ffb77c0bd4 Mon Sep 17 00:00:00 2001 From: Naim A <227396+naim94a@users.noreply.github.com> Date: Thu, 25 Oct 2018 22:49:25 +0300 Subject: [PATCH] Added ability to configure log level. --- src/config.rs | 6 ++++++ src/main.rs | 26 ++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/config.rs b/src/config.rs index f73c1c2..53430b3 100644 --- a/src/config.rs +++ b/src/config.rs @@ -40,6 +40,7 @@ pub struct Configuration { mode: TrackerMode, udp: UDPConfig, http: Option, + log_level: Option, } #[derive(Debug)] @@ -83,6 +84,10 @@ impl Configuration { &self.udp } + pub fn get_log_level(&self) -> &Option { + &self.log_level + } + pub fn get_http_config(&self) -> &Option { &self.http } @@ -91,6 +96,7 @@ impl Configuration { impl Default for Configuration { fn default() -> Configuration { Configuration{ + log_level: None, mode: TrackerMode::DynamicMode, udp: UDPConfig{ announce_interval: 120, diff --git a/src/main.rs b/src/main.rs index a7a4510..f537f35 100644 --- a/src/main.rs +++ b/src/main.rs @@ -15,10 +15,31 @@ mod server; mod tracker; mod stackvec; mod webserver; +mod service; mod config; + +use std::process::exit; use config::Configuration; fn setup_logging(cfg: &Configuration) { + let log_level = match cfg.get_log_level() { + None => log::LevelFilter::Info, + Some(level) => { + match level.as_str() { + "off" => log::LevelFilter::Off, + "trace" => log::LevelFilter::Trace, + "debug" => log::LevelFilter::Debug, + "info" => log::LevelFilter::Info, + "warn" => log::LevelFilter::Warn, + "error" => log::LevelFilter::Error, + _ => { + eprintln!("udpt: unknown log level encountered '{}'", level.as_str()); + exit(-1); + } + } + } + }; + if let Err(err) = fern::Dispatch::new() .format(|out, message, record| { out.finish( @@ -31,7 +52,7 @@ fn setup_logging(cfg: &Configuration) { ) ) }) - .level(log::LevelFilter::Trace) + .level(log_level) .chain(std::io::stdout()) .apply() { eprintln!("udpt: failed to initialize logging. {}", err); @@ -75,7 +96,8 @@ fn main() { trace!("Waiting for UDP packets"); let logical_cpus = num_cpus::get(); let mut threads = Vec::with_capacity(logical_cpus); - for _ in 0..logical_cpus { + for i in 0..logical_cpus { + debug!("starting thread {}/{}", i+1, logical_cpus); let server_handle = udp_server.clone(); threads.push(std::thread::spawn(move || { loop {