diff --git a/server/Cargo.toml b/server/Cargo.toml index c98138d2..abf335ad 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -23,7 +23,7 @@ failure = "0.1" dotenv = "0.9.0" log = "0.4" -fern = "0.5" +fern = { version = "0.5", features = ["colored"] } iron = "0.6" bodyparser = "0.8" diff --git a/server/src/main.rs b/server/src/main.rs index 44102168..72ddd763 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -54,27 +54,53 @@ mod warden; use std::thread::{spawn}; use std::path::{Path}; +use fern::colors::{Color, ColoredLevelConfig}; use crossbeam_channel::{unbounded}; fn setup_logger() -> Result<(), fern::InitError> { - fern::Dispatch::new() + let colors_line = ColoredLevelConfig::new() + .error(Color::Red) + .warn(Color::Yellow) + .info(Color::BrightWhite) + .debug(Color::BrightWhite) + .trace(Color::BrightBlack); + + let colors_level = colors_line.clone().info(Color::Green); + let term = fern::Dispatch::new() + .format(move |out, message, record| { + out.finish(format_args!( + "{color_line}[{date}][{target}][{level}{color_line}] {message}\x1B[0m", + color_line = format_args!("\x1B[{}m", colors_line.get_color(&record.level()).to_fg_str()), + date = chrono::Local::now().format("%Y-%m-%d %H:%M:%S"), + target = record.target(), + level = colors_level.color(record.level()), + message = message, + )); + }) + .chain(std::io::stdout()); + + let file = fern::Dispatch::new() .format(|out, message, record| { out.finish(format_args!( - "{}[{}][{}] {}", - chrono::Local::now().format("[%Y-%m-%d][%H:%M:%S]"), + "{{\"time\":\"{}\",\"name\":\"{}\",\"level\":\"{}\",\"msg\":\"{}\"}}", + chrono::Local::now().to_rfc3339(), record.target(), record.level(), message )) }) + .chain(fern::log_file("/var/log/mnml/mnml.log")?); + + fern::Dispatch::new() .level_for("postgres", log::LevelFilter::Info) .level_for("ws", log::LevelFilter::Warn) .level_for("iron", log::LevelFilter::Info) .level(log::LevelFilter::Info) - .chain(std::io::stdout()) - .chain(fern::log_file("/var/log/mnml/mnml.log")?) + .chain(term) + .chain(file) .apply()?; + Ok(()) }