mtlog 0.4.0

Multi-threaded logger with support for log files.
Documentation
use std::path::PathBuf;

use mtlog::{SizeRotationConfig, logger_config};

fn main() {
    let dir = PathBuf::from("/tmp/mtlog_example_rotation");
    let _ = std::fs::remove_dir_all(&dir);

    let _guard = logger_config()
        .with_name("rotation-demo")
        .with_size_rotation(SizeRotationConfig {
            folder: dir.clone(),
            filename: "app".into(),
            extension: "log".into(),
            max_file_size: None,
            max_lines: Some(10),
            max_files: 3,
        })
        .unwrap()
        .init_global();

    for i in 0..50 {
        log::info!("Log message number {i}");
    }

    drop(_guard);

    let files: Vec<String> = std::fs::read_dir(&dir)
        .unwrap()
        .flatten()
        .filter_map(|e| {
            let name = e.file_name().to_string_lossy().to_string();
            if name.starts_with("app_") && name.ends_with(".log") {
                Some(name)
            } else {
                None
            }
        })
        .collect();

    println!("\n--- Rotation Summary ---");
    println!("Log directory: {}", dir.display());
    println!("Files remaining (max_files=3): {}", files.len());
    for f in &files {
        println!("  {f}");
    }
    assert!(files.len() <= 3, "max_files cleanup should keep at most 3");
}