eager_log 0.1.1

chandlerpan log
Documentation
#![allow(unused_macros)]

use chrono::Local;
use std::io;
#[macro_use]
pub mod color;

#[macro_export]
macro_rules! logger {
    ($lvl:expr) => ({
        let line = line!();
        let file = file!();
        let _ = $crate::output($lvl,file,line,String::new());
    });
    ($lvl:expr, $($arg:tt)*) => ({
        let line = line!();
        let file = file!();
        let value = format!($($arg)*);
        let _ = $crate::output($lvl,file,line,value);
    })
}

#[macro_export]
macro_rules! trace {
    () => (logger!($crate::color::Color::BrightGreen));
    ($($arg:tt)*) => (logger!($crate::color::Color::BrightCyan,$($arg)*))
}

#[macro_export]
macro_rules! notice {
    () => (logger!($crate::color::Color::BrightGreen));
    ($($arg:tt)*) => (logger!($crate::color::Color::BrightGreen,$($arg)*))
}

#[macro_export]
macro_rules! debug {
    () => (logger!($crate::color::Color::BrightBlue));
    ($($arg:tt)*) => (logger!($crate::color::Color::BrightBlue,$($arg)*))
}

#[macro_export]
macro_rules! info {
    () => (logger!($crate::color::Color::BrightYellow));
    ($($arg:tt)*) => (logger!($crate::color::Color::BrightYellow,$($arg)*))
}

#[macro_export]
macro_rules! warn {
    () => (logger!($crate::color::Color::BrightMagenta));
    ($($arg:tt)*) => (logger!($crate::color::Color::BrightMagenta,$($arg)*))
}

#[macro_export]
macro_rules! error {
    () => (logger!($crate::color::Color::Red));
    ($($arg:tt)*) => (logger!($crate::color::Color::Red,$($arg)*))
}

pub fn output(level: color::Color, file: &str, line: u32, content: String) -> io::Result<()> {
    let file_line = format!("{}:{}  ", file, line);
    let buf = format!(
        "\x1b[{}m{}{} {}\x1b[0m",
        level.to_fg_str().to_string(),
        Local::now().format("%Y-%m-%d %H:%M:%S%.3f ").to_string(),
        file_line,
        content
    );
    println!("{}", buf);
    return Ok(());
}

#[test]
fn ex() {
    logger!(color::Color::BrightCyan, "logger");
    trace!("trace");
    notice!("notice");
    debug!("debug");
    info!("info");
    warn!("warn");
    error!("error");
    debug!("{}", 3);

    let c: color::Color = String::from("bright blue").into();
    println!("{}", c.to_fg_str())
}