Skip to content

Commit 4427447

Browse files
feat: add basic env logging
1 parent 3c11031 commit 4427447

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ edition = "2021"
1010
serde = { version = "1.0.144", features = ["derive"] }
1111
# json support
1212
serde_json = "1.0.85"
13-
log = { version = "0.4.17" }
13+
log = { version = "0.4.17", features = ["std"]}
1414
atty = "0.2.14"
1515
walkdir = "2.3.2"
1616
quick-xml = { version = "0.28.0", features = ["serialize"] }

src/fmtlogger.rs

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use std::sync::OnceLock;
2+
13
use log::{Level, LevelFilter, Log, Metadata, Record};
24

35
const CLICOLOR_FORCE: &str = "CLICOLOR_FORCE";
@@ -65,11 +67,23 @@ impl Log for Logger {
6567
}
6668

6769
pub fn default() {
68-
const LOGGER: Logger = Logger {
69-
level: LevelFilter::Trace,
70-
};
71-
log::set_max_level(LOGGER.level);
72-
if let Err(err) = log::set_logger(&LOGGER) {
70+
static LOGGER: OnceLock<Logger> = OnceLock::new();
71+
let logger = LOGGER.get_or_init(|| Logger {
72+
level: std::env::var_os("RUST_LOG")
73+
.map(|x| x.into_string().ok())
74+
.flatten()
75+
.map(|x| match x.as_str() {
76+
"warn" => log::LevelFilter::Warn,
77+
"trace" => log::LevelFilter::Trace,
78+
"error" => log::LevelFilter::Error,
79+
"info" => log::LevelFilter::Info,
80+
"debug" => log::LevelFilter::Debug,
81+
_ => log::LevelFilter::Trace,
82+
})
83+
.unwrap_or(log::LevelFilter::Trace),
84+
});
85+
log::set_max_level(logger.level);
86+
if let Err(err) = log::set_boxed_logger(Box::new(logger)) {
7387
// used const to allow for static lifetime
7488
eprintln!("attaching logger failed! shouldn't be possible: {:?}", err);
7589
}

0 commit comments

Comments
 (0)