monitor/src/options/logger.rs

56 lines
1.6 KiB
Rust

// use std::fs::OpenOptions;
// use std::process::Command;
use chrono::Local;
use env_logger::Builder;
use log::LevelFilter;
use std::io::Write;
// use tokio::fs::File;
// use tokio::io::BufWriter;
use crate::utils::get_container_id;
// struct CustomLogger<W: Write> {
// stdout: W,
// file_writer: BufWriter<File>,
// }
pub fn setup_logger() -> Result<(), crate::options::structs::CustomError> {
// if Command::new("sh").args(["-c", "mkdir logs"]).output().is_err() {
// println!("Error: Cannot init logs directory");
// std::process::exit(1);
// }
//
// let log_target = Box::new(OpenOptions::new().create(true).append(true).open("./logs/runner.log").unwrap_or_else(|_| {
// println!("Error: Cannot create local log-file in /logs/runner.log, returning...");
// std::process::exit(1);
// }));
// building logger with current output format
Builder::new()
.format(move |buf, record| {
writeln!(
buf,
"|{}| {} [{}] - {}",
get_container_id().unwrap_or("NODE".to_string()).trim(),
Local::now().format("%d-%m-%Y %H:%M:%S"),
record.level(),
record.args(),
)
})
.filter(None, LevelFilter::Info)
.target(env_logger::Target::Stdout)
// temporary deprecated
// .target(env_logger::Target::Pipe(log_target))
.init();
Ok(())
}
#[cfg(test)]
mod logger_tests {
use super::*;
#[test]
fn setting_up_logger() {
assert!(setup_logger().is_ok());
}
}