Przeglądaj źródła

bugfix: get_log_config(), the log level is set in TermLogger::new(), not in get_log_config() which simply controls the formatting.

x 3 lat temu
rodzic
commit
39db8099d9
1 zmienionych plików z 23 dodań i 17 usunięć
  1. 23 17
      src/util/cli.rs

+ 23 - 17
src/util/cli.rs

@@ -71,6 +71,15 @@ pub fn spawn_config(path: &Path, contents: &[u8]) -> Result<()> {
     Ok(())
 }
 
+// Log levels in Rust are:
+//
+//   Error (highest)
+//   Warn     |
+//   Info     |
+//   Debug   \|/
+//   Trace (lowest)
+//
+
 pub fn get_log_level(verbosity_level: u8) -> simplelog::LevelFilter {
     match verbosity_level {
         0 => simplelog::LevelFilter::Info,
@@ -80,15 +89,12 @@ pub fn get_log_level(verbosity_level: u8) -> simplelog::LevelFilter {
     }
 }
 
-pub fn get_log_config(verbosity_level: u8) -> simplelog::Config {
+pub fn get_log_config() -> simplelog::Config {
+    let mut cfgbuilder = ConfigBuilder::new();
+
     match env::var("LOG_TARGETS") {
         Ok(x) => {
             let targets: Vec<String> = x.split(',').map(|x| x.to_string()).collect();
-            let mut cfgbuilder = ConfigBuilder::new();
-            match verbosity_level {
-                0 => cfgbuilder.set_target_level(simplelog::LevelFilter::Debug),
-                _ => cfgbuilder.set_target_level(simplelog::LevelFilter::Error),
-            };
 
             for i in targets {
                 if i.starts_with('!') {
@@ -97,18 +103,18 @@ pub fn get_log_config(verbosity_level: u8) -> simplelog::Config {
                     cfgbuilder.add_filter_allow(i);
                 }
             }
-
-            cfgbuilder.build()
-        }
-        Err(_) => {
-            let mut cfgbuilder = ConfigBuilder::new();
-            match verbosity_level {
-                0 => cfgbuilder.set_target_level(simplelog::LevelFilter::Debug),
-                _ => cfgbuilder.set_target_level(simplelog::LevelFilter::Error),
-            };
-            cfgbuilder.build()
         }
+        Err(_) => {}
     }
+    // Show the level label [ERROR] for all levels
+    cfgbuilder.set_max_level(simplelog::LevelFilter::Error);
+    // The target: "foo" label
+    cfgbuilder.set_target_level(simplelog::LevelFilter::Error);
+    // Module such as net::p2p
+    //cfgbuilder.set_module_level(simplelog::LevelFilter::Trace);
+    // Filename and line number of the current log
+    cfgbuilder.set_location_level(simplelog::LevelFilter::Error);
+    cfgbuilder.build()
 }
 
 /// This macro is used for a standard way of daemonizing darkfi binaries
@@ -174,7 +180,7 @@ macro_rules! async_daemonize {
             let args = Args::from_args_with_toml(&std::fs::read_to_string(cfg_path)?).unwrap();
 
             let log_level = darkfi::util::cli::get_log_level(args.verbose);
-            let log_config = darkfi::util::cli::get_log_config(args.verbose);
+            let log_config = darkfi::util::cli::get_log_config();
 
             // Setup terminal logger
             let term_logger = simplelog::TermLogger::new(