#[cfg(not(windows))]
// This is necessary because `fern` depends on both version 3 and 4.
use syslog3 as syslog;

#[cfg(not(windows))]
use log::{debug, info, warn};

#[cfg(not(windows))]
fn setup_logging() -> Result<(), fern::InitError> {
    fern::Dispatch::new()
        // by default only accept warning messages so as not to spam
        .level(log::LevelFilter::Warn)
        // but accept Info if we explicitly mention it
        .level_for("explicit-syslog", log::LevelFilter::Info)
        .chain(syslog::unix(syslog::Facility::LOG_USER)?)
        .apply()?;

    Ok(())
}

#[cfg(not(windows))]
fn main() {
    setup_logging().expect("failed to initialize logging.");

    // None of this will be shown in the syslog:
    for i in 0..5 {
        info!("executing section: {}", i);

        debug!("section {} 1/4 complete.", i);

        debug!("section {} 1/2 complete.", i);

        debug!("section {} 3/4 complete.", i);

        info!("section {} completed!", i);
    }

    // these two *will* show.

    info!(target: "explicit-syslog", "hello to the syslog! this is rust.");

    warn!("AHHH something's on fire.");
}

#[cfg(windows)]
fn main() {
    panic!("this example does not work on Windows.");
}
