metrics-logger 0.22.1

Logs metrics, for development and testing purposes
Documentation
use metrics_logger::{LogMode, MetricsLogger, metrics};
use std::time::Duration;

pub fn metrics_logger_test(mode: LogMode) {
    simple_logger::init_with_level(log::Level::Debug).unwrap();

    let recorder = MetricsLogger::new(
        mode,
        |logs| log::debug!("\n{}", logs),
        |err| log::error!("MetricsLogger error: {}", err),
    );
    metrics::set_global_recorder(recorder).unwrap();

    let counter = metrics::counter!("test_counter");
    let gauge = metrics::gauge!("test_gauge");
    let histogram = metrics::histogram!("test_histogram");

    let handle = std::thread::spawn(move || {
        println!("generating logs");
        for idx in 0..4 {
            counter.increment(1);
            gauge.increment(idx);
            histogram.record(idx as f64);
            std::thread::sleep(Duration::from_secs(1));
        }

        println!("sleeping");
        std::thread::sleep(Duration::from_secs(3));

        println!(
            "logging again. testing that metrics with the same name are counted in the same bucket."
        );
        for idx in 4..7 {
            metrics::counter!("test_counter").increment(1);
            metrics::gauge!("test_gauge").decrement(idx);
            metrics::histogram!("test_histogram").record(idx as f64);
            std::thread::sleep(Duration::from_secs(1));
        }
    });
    handle.join().expect("Thread panicked");
}