todors 0.10.7

todo app with CLI, REST & gRPC interfaces
use slog::Drain;
pub use slog::Logger;
pub use slog::{debug, error, info, trace};

pub fn init(log_level: &str) -> Logger {
    let decorator = slog_term::TermDecorator::new().build();
    let drain = slog_term::FullFormat::new(decorator).build().fuse();
    let drain = slog_async::Async::new(drain).build().fuse();
    let level = get_log_level(log_level);
    let drain = slog::LevelFilter::new(drain, level).fuse();

    Logger::root(drain.fuse(), slog::o!())
}

fn get_log_level(log_level: &str) -> slog::Level {
    match log_level.to_lowercase().as_str() {
        "debug" => slog::Level::Debug,
        "trace" => slog::Level::Trace,
        "info" => slog::Level::Info,
        "warn" => slog::Level::Warning,
        "error" => slog::Level::Error,
        _ => slog::Level::Info,
    }
}