fstdout-logger 0.2.2

An implementation of the log crate that logs to stdout and to an optional log file with configurable options.
Documentation
use fstdout_logger::examples::{
    show_colored_log_examples, show_file_info_examples, show_plain_log_examples,
};

fn main() {
    // First demonstrate the difference between colored and plain text logs
    println!("# Log Format Comparison\n");
    println!("This example shows different log formats side by side.\n");

    // Show plain text logs
    show_plain_log_examples();

    // Show colored logs
    show_colored_log_examples();

    // Show the difference with and without file information
    show_file_info_examples();

    println!("Note: This demonstration shows how logs appear with different configurations.");
    println!("In actual usage, you would use one of these approaches:");
    println!("  - init_logger(path) // Simple initialization with defaults");
    println!("  - init_logger_with_level(path, level) // Set specific log level");
    println!("  - init_simple_stdout_logger(level) // Simple stdout-only logger");
    println!("  - init_production_logger(path) // Production optimized (no file info)");
    println!("  - init_development_logger(path) // Development optimized (with file info)");
    println!("\nOr create a custom configuration:");
    println!("  let config = LoggerConfig::builder()");
    println!("    .level(LevelFilter::Debug)");
    println!("    .show_file_info(false)  // Hide file info for cleaner output");
    println!("    .show_date_in_stdout(false) // Show only time in stdout");
    println!("    .use_colors(true)  // Enable colored output");
    println!("    .build();");
    println!("  init_logger_with_config(path, config)");
}