north_common/utils/
logger_utils.rs1use yansi::Paint;
2
3use log::{Level, LevelFilter, Metadata, Record};
4use log4rs::append::console::ConsoleAppender;
5use log4rs::append::file::FileAppender;
6use log4rs::config::{Appender, Logger as LoggerRs, Root};
7use log4rs::encode::pattern::PatternEncoder;
8use log4rs::Config;
9
10pub fn print_format(name: &str, value: &str) {
11 println!(
12 "=> {}: {}",
13 Paint::green(name).bold(),
14 Paint::default(value).bold()
15 );
16}
17
18pub struct Logger;
19
20impl log::Log for Logger {
21 fn enabled(&self, metadata: &Metadata) -> bool {
22 metadata.level() <= Level::Info
23 }
24
25 fn log(&self, record: &Record) {
26 if self.enabled(record.metadata()) {
27 println!("{} - {}", record.level(), record.args());
28 }
29 }
30
31 fn flush(&self) {}
32}
33
34pub fn init_logger() {
35 let stdout = ConsoleAppender::builder()
36 .encoder(Box::new(PatternEncoder::new(
37 "[North] {h({d(%Y-%m-%d %H:%M:%S %z)})} {l} [{t}] - {m}{n}",
38 )))
39 .build();
40
41 let requests = FileAppender::builder()
42 .encoder(Box::new(PatternEncoder::new(
43 "[North] {h({d(%Y-%m-%d %H:%M:%S %z)})} {l} [{t}] - {m}{n}",
44 )))
45 .build("log/requests.log")
46 .unwrap();
47
48 let config = Config::builder()
49 .appender(Appender::builder().build("stdout", Box::new(stdout)))
50 .appender(Appender::builder().build("requests", Box::new(requests)))
51 .logger(LoggerRs::builder().build("arangors_lite::response", LevelFilter::Info))
52 .logger(LoggerRs::builder().build("hyper", LevelFilter::Warn))
53 .logger(LoggerRs::builder().build("reqwest", LevelFilter::Warn))
54 .build(Root::builder().appender("stdout").build(LevelFilter::Debug))
55 .unwrap();
56 if log4rs::init_config(config).is_ok() {};
57}