1use chrono::Local;
2use log::LevelFilter;
3use simplelog::{CombinedLogger, Config, WriteLogger};
4use std::fs;
5use std::path::Path;
6
7pub fn setup_logging(
16 config_dir: &Path,
17 log_level: &LevelFilter,
18) -> Result<(), Box<dyn std::error::Error>> {
19 match log_level {
20 LevelFilter::Off => Ok(()), level => {
22 let log_dir = config_dir.join("logs");
24 fs::create_dir_all(&log_dir)?;
25
26 let timestamp = Local::now().format("%Y-%m-%d_%H-%M-%S");
28 let log_file = log_dir.join(format!("chess-tui_{timestamp}.log"));
29
30 CombinedLogger::init(vec![WriteLogger::new(
31 *level,
32 Config::default(),
33 fs::File::create(log_file)?,
34 )])?;
35
36 log::info!("Logging initialized at {level} level");
37 Ok(())
38 }
39 }
40}