1use flexi_logger::{Age, Cleanup, Criterion, Duplicate, FileSpec, Logger, Naming, WriteMode};
2
3use log::LevelFilter;
4
5use crate::fs_manager;
6pub fn init(log_level: LevelFilter, to_file: bool) {
8 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}