ruxio_common/
logging.rs

1use std::time::SystemTime;
2
3use fern::colors::{Color, ColoredLevelConfig};
4
5pub fn setup_logger() -> Result<(), fern::InitError> {
6    fern::Dispatch::new()
7        .format(|out, message, record| {
8            let colors_line = ColoredLevelConfig::new()
9                .info(Color::Green)
10                .warn(Color::Yellow)
11                .error(Color::Red);
12            out.finish(format_args!(
13                "{} [{} {} {}] {}",
14                format_args!(
15                    "\x1B[{}m",
16                    colors_line.get_color(&record.level()).to_fg_str()
17                ),
18                humantime::format_rfc3339_seconds(SystemTime::now()),
19                record.level(),
20                record.target(),
21                message
22            ))
23        })
24        .level(log::LevelFilter::Debug)
25        .level_for("fairy", log::LevelFilter::Trace)
26        .level_for("fairy_common", log::LevelFilter::Trace)
27        .level_for("fairy_fuse", log::LevelFilter::Trace)
28        .chain(std::io::stdout())
29        .chain(fern::log_file("output.log")?)
30        .apply()?;
31    Ok(())
32}