slog-dtrace 0.3.0

Forward slog messages to DTrace
Documentation
//! Example using a DTrace drain along with an existing drain.
use slog::{debug, info, o, warn, Drain, Logger};
use slog_dtrace::{with_drain, ProbeRegistration};

fn main() {
    usdt::register_probes().unwrap();
    let decorator = slog_term::TermDecorator::new().build();
    let drain = slog_term::FullFormat::new(decorator)
        .build()
        .filter_level(slog::Level::Warning)
        .fuse();
    let drain = slog_async::Async::new(drain).build().fuse();
    let (drain, registration) = with_drain(drain);
    if let ProbeRegistration::Failed(ref e) = registration {
        panic!("Failed to register probes: {:#?}", e);
    }
    let log = Logger::root(drain.fuse(), o!("key" => "value"));
    loop {
        warn!(log, "a warning message for everyone"; "cool" => true);
        info!(log, "info is just for dtrace"; "hello" => "from dtrace", "cool" => true);
        debug!(log, "only dtrace gets debug messages"; "hello" => "from dtrace", "cool" => true);
        std::thread::sleep(std::time::Duration::from_secs(1));
    }
}