Cactus/logging/
mod.rs

1use flexi_logger::{Age, Cleanup, Criterion, Duplicate, FileSpec, Logger, Naming, WriteMode};
2
3use log::LevelFilter;
4
5use crate::fs_manager;
6/// TODO: resolve the issue where info doesn't have color (minor issue)
7pub fn init(log_level: LevelFilter, to_file: bool) {
8    // Call init ONLY once else result in panic
9
10    if to_file {
11        fs_manager::create_dirs();
12
13        Logger::try_with_str(log_level.as_str())
14            .unwrap()
15            .log_to_file(
16                FileSpec::default()
17                    .directory("logs")
18                    .basename("app")
19                    .suffix("log"),
20            )
21            .rotate(
22                Criterion::AgeOrSize(Age::Day, 10_000_000),
23                Naming::Timestamps,
24                Cleanup::KeepLogFiles(10),
25            )
26            .duplicate_to_stderr(Duplicate::All)
27            .write_mode(WriteMode::BufferAndFlush)
28            .start()
29            .unwrap();
30
31        return;
32    }
33
34    Logger::try_with_str(log_level.as_str())
35        .unwrap()
36        .duplicate_to_stderr(Duplicate::All)
37        .format_for_stderr(flexi_logger::colored_default_format)
38        .write_mode(WriteMode::BufferAndFlush)
39        .start()
40        .unwrap();
41}