use std::str::FromStr;
use log::LevelFilter;
use log4rs::{
append::{console::ConsoleAppender, file::FileAppender},
config::{Appender, Logger, Root},
encode::pattern::PatternEncoder,
Config,
};
pub fn configure(log_level: String) {
let stdout = ConsoleAppender::builder()
.encoder(Box::new(PatternEncoder::new(
"{d(%Y-%m-%d %H:%M:%S)} | {h({l}):5.5} | {f}:{L} — {m}{n}",
)))
.build();
let requests = FileAppender::builder()
.encoder(Box::new(PatternEncoder::new(
"{d(%Y-%m-%d %H:%M:%S)} | {({l}):5.5} | {f}:{L} — {m}{n}",
)))
.build("/var/log/manta/requests.log")
.unwrap();
let config = Config::builder()
.appender(Appender::builder().build("stdout", Box::new(stdout)))
.appender(Appender::builder().build("requests", Box::new(requests)))
.logger(
Logger::builder()
.appender("stdout")
.build("app::backend", LevelFilter::Info),
)
.logger(
Logger::builder()
.appender("requests")
.additive(false)
.build("app::audit", LevelFilter::Info),
)
.build(
Root::builder()
.appender("stdout")
.build(LevelFilter::from_str(&log_level).unwrap_or(LevelFilter::Error)),
)
.unwrap();
let _handle = log4rs::init_config(config).unwrap();
}