reactive_graph/server/args/
logging.rs1use crate::server::args::ServerArguments;
2use log::LevelFilter;
3use log4rs::Config;
4use log4rs::append::console::ConsoleAppender;
5use log4rs::config::Appender;
6use log4rs::config::Root;
7use std::process::exit;
8
9pub fn init_logging(args: &ServerArguments) {
10 if !args.quiet.unwrap_or(false) {
12 let logging_config_location = args
13 .runtime
14 .config_locations
15 .logging_config
16 .clone()
17 .unwrap_or(String::from("./config/logging.toml"));
18
19 if let Err(error) = log4rs::init_file(&logging_config_location, Default::default()) {
20 eprintln!("Failed to configure logger using config file {}: {}", &logging_config_location, error);
21 let stdout = ConsoleAppender::builder().build();
22 let Ok(config) = Config::builder()
23 .appender(Appender::builder().build("stdout", Box::new(stdout)))
24 .build(Root::builder().appender("stdout").build(LevelFilter::Info))
25 else {
26 eprintln!("Failed to create fallback logger! Exiting with error");
27 exit(1);
28 };
29 if let Err(e) = log4rs::init_config(config) {
30 eprintln!("Failed to configure logger: {e}");
31 }
32 }
33 }
34}