diff --git a/Cargo.toml b/Cargo.toml index 0e91231..3d61eaf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,7 @@ edition = "2021" serde = { version = "1.0.144", features = ["derive"] } # json support serde_json = "1.0.85" -log = { version = "0.4.17" } +log = { version = "0.4.17", features = ["std"]} atty = "0.2.14" walkdir = "2.3.2" quick-xml = { version = "0.28.0", features = ["serialize"] } diff --git a/Dockerfile b/Dockerfile index 1f14311..912bd7e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,7 +7,9 @@ ENV DEBIAN_FRONTEND=noninteractive # update the system and install any dependencies RUN apt-get update \ && apt-get upgrade -y libksba-dev \ - && apt-get install -y git cmake build-essential byacc libpcre3 libpcre3-dev grep lsb-release wget software-properties-common gnupg libcurl4-openssl-dev unzip lcov --no-install-recommends # skipcq: DOK-DL3018 + && apt-get install -y software-properties-common \ + && add-apt-repository ppa:deadsnakes/ppa\ + && apt-get install -y git cmake build-essential byacc libpcre3 libpcre3-dev grep lsb-release wget gnupg libcurl4-openssl-dev unzip lcov python3.11 --no-install-recommends # skipcq: DOK-DL3018 # Get LLVM ARG LLVM_VER=16 diff --git a/src/fmtlogger.rs b/src/fmtlogger.rs index ac12871..167317a 100644 --- a/src/fmtlogger.rs +++ b/src/fmtlogger.rs @@ -1,3 +1,5 @@ +use std::sync::OnceLock; + use log::{Level, LevelFilter, Log, Metadata, Record}; const CLICOLOR_FORCE: &str = "CLICOLOR_FORCE"; @@ -65,11 +67,21 @@ impl Log for Logger { } pub fn default() { - const LOGGER: Logger = Logger { - level: LevelFilter::Trace, - }; - log::set_max_level(LOGGER.level); - if let Err(err) = log::set_logger(&LOGGER) { + static LOGGER: OnceLock = OnceLock::new(); + let logger = LOGGER.get_or_init(|| Logger { + level: std::env::var("RUST_LOG") + .map(|x| match x.as_str() { + "warn" => log::LevelFilter::Warn, + "trace" => log::LevelFilter::Trace, + "error" => log::LevelFilter::Error, + "info" => log::LevelFilter::Info, + "debug" => log::LevelFilter::Debug, + _ => log::LevelFilter::Trace, + }) + .unwrap_or(log::LevelFilter::Trace), + }); + log::set_max_level(logger.level); + if let Err(err) = log::set_boxed_logger(Box::new(logger)) { // used const to allow for static lifetime eprintln!("attaching logger failed! shouldn't be possible: {:?}", err); }