rtools 0.1.27

Set of tools for my needs
Documentation
#![allow(clippy::mismatched_target_os)]

use log::LevelFilter;

#[cfg(not(android))]
pub fn init_log(location: bool, level: usize) {
    extern crate simplelog;

    use simplelog::{
        ColorChoice, ConfigBuilder, LevelPadding, TermLogger, TerminalMode, ThreadLogMode,
    };

    let res = TermLogger::init(
        from_usize(level),
        ConfigBuilder::new()
            .set_time_level(LevelFilter::Off)
            .set_level_padding(LevelPadding::Right)
            .set_thread_level(LevelFilter::Off)
            .set_thread_mode(ThreadLogMode::Both)
            .set_location_level(if location {
                LevelFilter::Error
            } else {
                LevelFilter::Off
            })
            .set_target_level(LevelFilter::Off)
            .build(),
        TerminalMode::Mixed,
        ColorChoice::Auto,
    );
    trace!("Logger: {:?}", res);
}

fn from_usize(u: usize) -> LevelFilter {
    match u {
        0 => LevelFilter::Off,
        1 => LevelFilter::Error,
        2 => LevelFilter::Warn,
        3 => LevelFilter::Info,
        4 => LevelFilter::Debug,
        5 => LevelFilter::Trace,
        _ => panic!("Wrong log level. 5 is max"),
    }
}

#[cfg(android)]
pub fn init_log(_location: bool, _level: usize) {
    use android_logger::{Config, FilterBuilder};
    use log::Level;

    android_logger::init_once(
        Config::default()
            .with_min_level(Level::Trace)
            .with_tag("test_engine")
            .with_filter(
                FilterBuilder::new()
                    .parse("debug,hello::crate=error")
                    .build(),
            ),
    );

    trace!("Android logger: OK");
}