lightspeed_logger 0.27.0

LightSpeed
Documentation
use lightspeed_logger::config::{FileOutputConfig, LoggerConfig, Rotation, StandardOutputConfig};
use lightspeed_logger::setup_logger;
use log::{debug, warn};
use std::path::Path;
use tracing::info;

#[test]
fn should_setup_logger_with_env_filter() -> Result<(), std::io::Error> {
    let tempdir = tempfile::tempdir().unwrap();
    let file_output_directory = tempdir.path().to_str().unwrap().to_owned();
    let file_output_name_prefix = format!("filename_{}.log", rand::random::<u64>());
    let log_filename = format!("{}/{}", file_output_directory, file_output_name_prefix);

    let config = LoggerConfig {
        stdout_output: StandardOutputConfig { stdout_enabled: true, stdout_use_ansi_colors: true },
        env_filter: "debug,logger_file_output_it=info".to_owned(),
        file_output: FileOutputConfig {
            file_output_directory,
            file_output_enabled: true,
            file_output_name_prefix,
            file_output_rotation: Rotation::Never,
        },
    };
    let _guard = setup_logger(&config).unwrap();

    debug!("main - this is debug");
    info!("main - this is info");
    warn!("main - this is warn");

    let path = Path::new(&log_filename);
    assert!(path.exists());

    let log_content = std::fs::read_to_string(path).unwrap();
    assert!(log_content.contains("main - this is info"));
    assert!(!log_content.contains("main - this is debug"));

    Ok(())
}