From 682be021b7d983cdb640488db5bf5200f8d6b486 Mon Sep 17 00:00:00 2001 From: ntr Date: Tue, 20 Aug 2019 14:08:06 +1000 Subject: [PATCH] escape msg --- server/src/main.rs | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/server/src/main.rs b/server/src/main.rs index 72ddd763..9062363d 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -55,9 +55,17 @@ mod warden; use std::thread::{spawn}; use std::path::{Path}; use fern::colors::{Color, ColoredLevelConfig}; - +use iron::prelude::*; use crossbeam_channel::{unbounded}; +#[derive(Serialize)] +struct JsonLog { + time: String, + name: String, + level: String, + msg: String, +} + fn setup_logger() -> Result<(), fern::InitError> { let colors_line = ColoredLevelConfig::new() .error(Color::Red) @@ -80,14 +88,18 @@ fn setup_logger() -> Result<(), fern::InitError> { }) .chain(std::io::stdout()); - let file = fern::Dispatch::new() + let json = fern::Dispatch::new() .format(|out, message, record| { + let json = JsonLog { + time: chrono::Local::now().to_rfc3339(), + name: record.target().to_string(), + level: record.level().to_string(), + msg: message.to_string() + }; + out.finish(format_args!( - "{{\"time\":\"{}\",\"name\":\"{}\",\"level\":\"{}\",\"msg\":\"{}\"}}", - chrono::Local::now().to_rfc3339(), - record.target(), - record.level(), - message + "{}", + serde_json::to_string(&json).unwrap(), )) }) .chain(fern::log_file("/var/log/mnml/mnml.log")?); @@ -98,7 +110,7 @@ fn setup_logger() -> Result<(), fern::InitError> { .level_for("iron", log::LevelFilter::Info) .level(log::LevelFilter::Info) .chain(term) - .chain(file) + .chain(json) .apply()?; Ok(())