json_log 0.2.1

Log with JSON
Documentation
use serde::Serialize;

#[derive(Serialize)]
pub struct Msg<'a, T>
    where T: Serialize
{
    level: &'static str,
    ts: u128,
    msg: &'a T,
}

impl<'a, T> Msg<'a, T>
    where T: Serialize
{
    #[inline]
    fn level_to_string(level: log::Level) -> &'static str {
        match level {
            log::Level::Trace => "Trace",
            log::Level::Debug => "Debug",
            log::Level::Info => "Info",
            log::Level::Warn => "Warn",
            log::Level::Error => "Error",
        }
    }

    pub fn new(level: log::Level, msg: &'a T) -> Msg<'a, T> {
        Self {
            level: Self::level_to_string(level),
            ts: std::time::SystemTime::now().duration_since(std::time::UNIX_EPOCH).unwrap().as_millis(),
            msg,
        }
    }
}