diff --git a/lighthouse/environment/src/lib.rs b/lighthouse/environment/src/lib.rs index 8aa130f7bf..06ade157c2 100644 --- a/lighthouse/environment/src/lib.rs +++ b/lighthouse/environment/src/lib.rs @@ -228,7 +228,7 @@ impl Environment { } /// Sets the logger (and all child loggers) to log to a file. - pub fn log_to_json_file(&mut self, path: PathBuf) -> Result<(), String> { + pub fn log_to_json_file(&mut self, path: PathBuf, debug_level: &str) -> Result<(), String> { let file = OpenOptions::new() .create(true) .write(true) @@ -237,8 +237,19 @@ impl Environment { .map_err(|e| format!("Unable to open logfile: {:?}", e))?; let drain = Mutex::new(slog_json::Json::default(file)).fuse(); - let drain = slog_async::Async::new(drain).build().fuse(); - self.log = slog::Logger::root(drain, o!()); + let drain = slog_async::Async::new(drain).build(); + + let drain = match debug_level { + "info" => drain.filter_level(Level::Info), + "debug" => drain.filter_level(Level::Debug), + "trace" => drain.filter_level(Level::Trace), + "warn" => drain.filter_level(Level::Warning), + "error" => drain.filter_level(Level::Error), + "crit" => drain.filter_level(Level::Critical), + unknown => return Err(format!("Unknown debug-level: {}", unknown)), + }; + + self.log = Logger::root(drain.fuse(), o!()); info!( self.log, diff --git a/lighthouse/src/main.rs b/lighthouse/src/main.rs index d5d76a2446..6de49ddf02 100644 --- a/lighthouse/src/main.rs +++ b/lighthouse/src/main.rs @@ -95,12 +95,12 @@ fn run( environment_builder: EnvironmentBuilder, matches: &ArgMatches, ) -> Result<(), String> { + let debug_level = matches + .value_of("debug-level") + .ok_or_else(|| "Expected --debug-level flag".to_string())?; + let mut environment = environment_builder - .async_logger( - matches - .value_of("debug-level") - .ok_or_else(|| "Expected --debug-level flag".to_string())?, - )? + .async_logger(debug_level)? .multi_threaded_tokio_runtime()? .build()?; @@ -110,7 +110,7 @@ fn run( let path = log_path .parse::() .map_err(|e| format!("Failed to parse log path: {:?}", e))?; - environment.log_to_json_file(path)?; + environment.log_to_json_file(path, debug_level)?; } if std::mem::size_of::() != 8 {