use crate::constant::RSVIM_LOG;
pub fn init() {
match std::env::var(RSVIM_LOG) {
Ok(value) => {
match env_filter::Builder::new().try_parse(&value) {
Ok(builder) => {
let formatter = "%FT%T%.3f%:z";
let filter = builder.build();
let now = jiff::Zoned::now();
let log_name = format!(
"rsvim_{:0>4}-{:0>2}-{:0>2}_{:0>2}-{:0>2}-{:0>2}-{:0>3}.log",
now.date().year(),
now.date().month(),
now.date().day(),
now.time().hour(),
now.time().minute(),
now.time().second(),
now.time().millisecond(),
);
fern::Dispatch::new()
.filter(move |metadata| filter.enabled(metadata))
.format(|out, message, record| {
out.finish(format_args!(
"{} {:<5} {}:{}| {}",
jiff::Zoned::now().strftime(formatter),
record.level(),
record.target(),
record.line().unwrap_or(0),
message
))
})
.chain(fern::log_file(log_name).unwrap())
.apply()
.unwrap();
}
Err(_) => { }
}
}
Err(_) => { }
}
}