slog 2.0.6

Structured, extensible, composable logging for Rust
Documentation
use slog::*;
use std::{fmt, result};

pub struct PrintlnSerializer;

impl Serializer for PrintlnSerializer {
    fn emit_arguments(&mut self, key: Key, val: &fmt::Arguments) -> Result {
        print!(", {}={}", key, val);
        Ok(())
    }
}

pub struct PrintlnDrain;

impl Drain for PrintlnDrain {
    type Ok = ();
    type Err = ();

    fn log(&self,
           record: &Record,
           values: &OwnedKVList)
           -> result::Result<Self::Ok, Self::Err> {

        print!("{}", record.msg());

        record.kv().serialize(record, &mut PrintlnSerializer).unwrap();
        values.serialize(record, &mut PrintlnSerializer).unwrap();

        println!("");
        Ok(())
    }
}