convey 0.2.0

A Rust create for outputting information and log messages for humans and machines
Documentation
use failure;
#[macro_use]
extern crate convey;
#[macro_use]
extern crate serde_derive;

use convey::{
    components::{newline, text},
    human, json,
};

fn main() -> Result<(), failure::Error> {
    let out = convey::new()
        .add_target(json::file("target/foo.log")?)?
        .add_target(human::stdout()?)?;

    #[derive(Serialize)]
    struct ErrorMessage {
        code: i32,
        name: String,
        message: String,
    }

    impl convey::Render for ErrorMessage {
        render_for_humans!(self -> [
            span!(fg = "white", bg = "black", [text(self.code.to_string()), text(" "),]),
            span!(fg = "red", bg = "black", [text(&self.name),]),
            newline(),
            text("> "),
            text(&self.message),
        ]);

        render_json!();
    }

    out.print(&ErrorMessage {
        code: 42,
        name: String::from("error"),
        message: String::from("Oh god no"),
    })?;

    Ok(())
}