kafka_io/
logger.rs

1use chrono::prelude::*;
2use env_logger::fmt::Formatter;
3use env_logger::Builder;
4use log::{LevelFilter, Record};
5use std::io::Write;
6use std::thread;
7
8pub fn logger(log_thread: bool, rust_log: Option<&str>) {
9    let output_format = move |formatter: &mut Formatter, record: &Record| {
10        let thread_name = if log_thread {
11            format!("(t: {}) ", thread::current().name().unwrap_or("unknown"))
12        } else {
13            "".to_string()
14        };
15
16        let local_time: DateTime<Local> = Local::now();
17        let time_str = local_time.format("%H:%M:%S%.3f").to_string();
18        write!(
19            formatter,
20            "{} {}{} - {} - {}\n",
21            time_str,
22            thread_name,
23            record.level(),
24            record.target(),
25            record.args()
26        )
27    };
28
29    let mut builder = Builder::new();
30    builder
31        .format(output_format)
32        .filter(None, LevelFilter::Info);
33
34    rust_log.map(|conf| builder.parse_filters(conf));
35
36    builder.init();
37}