1use std::str::FromStr;
2
3use log::LevelFilter;
4use log4rs::{
5 append::{console::ConsoleAppender, file::FileAppender},
6 config::{Appender, Logger, Root},
7 encode::pattern::PatternEncoder,
8 Config,
9};
10
11pub fn configure(log_level: String) {
13 let stdout = ConsoleAppender::builder()
14 .encoder(Box::new(PatternEncoder::new(
15 "{d(%Y-%m-%d %H:%M:%S)} | {h({l}):5.5} | {f}:{L} — {m}{n}",
16 )))
17 .build();
18
19 let requests = FileAppender::builder()
20 .encoder(Box::new(PatternEncoder::new(
21 "{d(%Y-%m-%d %H:%M:%S)} | {({l}):5.5} | {f}:{L} — {m}{n}",
22 )))
23 .build("/var/log/manta/requests.log")
24 .unwrap();
25
26 let config = Config::builder()
27 .appender(Appender::builder().build("stdout", Box::new(stdout)))
28 .appender(Appender::builder().build("requests", Box::new(requests)))
29 .logger(
30 Logger::builder()
31 .appender("stdout")
32 .build("app::backend", LevelFilter::Info),
33 )
34 .logger(
35 Logger::builder()
36 .appender("requests")
37 .additive(false)
38 .build("app::audit", LevelFilter::Info),
39 )
40 .build(
41 Root::builder()
42 .appender("stdout")
43 .build(LevelFilter::from_str(&log_level).unwrap_or(LevelFilter::Error)),
44 )
45 .unwrap();
46
47 let _handle = log4rs::init_config(config).unwrap();
48
49 }