aionbot/
logger.rs

1use anyhow::Result;
2use colored::Colorize;
3
4pub fn setup_logger(log_level: log::LevelFilter) -> Result<()> {
5    fern::Dispatch::new()
6        .format(|out, message, record| {
7            let level = record.level().as_str();
8            let module = record.target().split("::").next().unwrap_or_default();
9            let message = message.to_string();
10            let fmt_string = match record.level() {
11                log::Level::Error => {
12                    format!("{:6}| {} - {}", level.red(), module.green(), message.red())
13                }
14                log::Level::Warn => format!(
15                    "{:6}| {} - {}",
16                    level.bright_yellow(),
17                    module.green(),
18                    message.bright_yellow()
19                ),
20                log::Level::Info => format!(
21                    "{:6}| {} - {}",
22                    level.blue(),
23                    module.green(),
24                    message.blue()
25                ),
26                log::Level::Debug => {
27                    format!(
28                        "{:6}| {} - {}",
29                        level.magenta(),
30                        module.green(),
31                        message.magenta()
32                    )
33                }
34                log::Level::Trace => {
35                    format!("{:6}| {}", level.bright_black(), message.bright_black())
36                }
37            };
38            out.finish(format_args!("{}", fmt_string))
39        })
40        .level(log_level)
41        .chain(std::io::stdout())
42        .apply()?;
43    Ok(())
44}