reactive_graph/server/args/
logging.rs

1use 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    // Initialize logging
11    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}