🦀/100 Projects/Notes/Source

src/main.rs

View on GitHub
use std::fs::OpenOptions;
use std::io::{self, Write};
use chrono::Local;
 
fn main() {
    println!("📝 Logger Utility (writes to log.txt)");
 
    loop {
        println!("\nLog Levels: 1. INFO | 2. WARN | 3. ERROR | 4. Exit");
        let choice = input("Select a level: ");
 
        match choice.as_str() {
            "1" => log_message("INFO"),
            "2" => log_message("WARN"),
            "3" => log_message("ERROR"),
            "4" => {
                println!("👋 Exiting logger.");
                break;
            }
            _ => println!("❌ Invalid choice."),
        }
    }
}
 
fn log_message(level: &str) {
    let message = input(&format!("Enter {} message: ", level));
    let timestamp = Local::now().format("%Y-%m-%d %H:%M:%S").to_string();
    let entry = format!("[{}] {}: {}\n", timestamp, level, message);
 
    let mut file = OpenOptions::new()
        .create(true)
        .append(true)
        .open("log.txt")
        .expect("❌ Unable to open log file");
 
    file.write_all(entry.as_bytes()).expect("❌ Write failed");
    println!("✅ Logged successfully.");
}
 
fn input(prompt: &str) -> String {
    print!("{}", prompt);
    io::stdout().flush().unwrap();
    let mut buffer = String::new();
    io::stdin().read_line(&mut buffer).unwrap();
    buffer.trim().to_string()
}

← Back to folder