Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"] }
Expand Down
24 changes: 19 additions & 5 deletions src/fmtlogger.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
use std::sync::OnceLock;

use log::{Level, LevelFilter, Log, Metadata, Record};

const CLICOLOR_FORCE: &str = "CLICOLOR_FORCE";
Expand Down Expand Up @@ -65,11 +67,23 @@ 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<Logger> = OnceLock::new();
let logger = LOGGER.get_or_init(|| Logger {
level: std::env::var_os("RUST_LOG")
.map(|x| x.into_string().ok())
.flatten()
.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);
}
Expand Down