winston 0.1.1

winston for rust
Documentation
use serde::Serialize;
use serde_json::Value;
use std::collections::HashMap;

#[derive(Debug, Serialize)]
pub struct LogEntry {
    pub level: String,
    pub message: String,
    pub meta: HashMap<String, Value>,
}

impl LogEntry {
    pub fn builder(level: &str, message: &str) -> LogEntryBuilder {
        LogEntryBuilder::new(level, message)
    }
}

pub struct LogEntryBuilder {
    level: String,
    message: String,
    meta: HashMap<String, Value>,
}

impl LogEntryBuilder {
    fn new(level: &str, message: &str) -> Self {
        LogEntryBuilder {
            level: level.to_string(),
            message: message.to_string(),
            meta: HashMap::new(),
        }
    }

    pub fn option(mut self, key: &str, value: Value) -> Self {
        self.meta.insert(key.to_string(), value);
        self
    }

    pub fn build(self) -> LogEntry {
        LogEntry {
            level: self.level,
            message: self.message,
            meta: self.meta,
        }
    }
}

pub fn convert_log_entry(entry: &LogEntry) -> logform::LogInfo {
    logform::LogInfo {
        level: entry.level.clone(),
        message: entry.message.clone(),
        meta: entry.meta.clone(),
    }
}