From 3100e1e2fe5fd2b7458cbb72a41f4848fbf64dcd Mon Sep 17 00:00:00 2001 From: Jeremiah Senkpiel Date: Tue, 3 Nov 2020 11:08:45 -0800 Subject: [PATCH 1/2] Logger: only output debug from errors on Debug mode Should help clean up stuff in the release-mode json logs. --- src/log/middleware.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/log/middleware.rs b/src/log/middleware.rs index 144db885f..42854b128 100644 --- a/src/log/middleware.rs +++ b/src/log/middleware.rs @@ -49,8 +49,13 @@ impl LogMiddleware { let status = response.status(); if status.is_server_error() { if let Some(error) = response.error() { + #[cfg(debug_assertions)] + let message = format!("{:?}", error); + #[cfg(not(debug_assertions))] + let message = format!("{}", error); + log::error!("Internal error --> Response sent", { - message: format!("{:?}", error), + message: message, error_type: error.type_name(), method: method, path: path, @@ -67,8 +72,13 @@ impl LogMiddleware { } } else if status.is_client_error() { if let Some(error) = response.error() { + #[cfg(debug_assertions)] + let message = format!("{:?}", error); + #[cfg(not(debug_assertions))] + let message = format!("{}", error); + log::warn!("Client error --> Response sent", { - message: format!("{:?}", error), + message: message, error_type: error.type_name(), method: method, path: path, From 55326d0db5c1ba3de54770504da4a3651afcf2b8 Mon Sep 17 00:00:00 2001 From: Jeremiah Senkpiel Date: Tue, 3 Nov 2020 11:09:41 -0800 Subject: [PATCH 2/2] Logger: dedupe code a bit Ideally there would be a separate key-value formatter that isn't directly connected to the log crate. --- src/log/middleware.rs | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/log/middleware.rs b/src/log/middleware.rs index 42854b128..ce82a0d27 100644 --- a/src/log/middleware.rs +++ b/src/log/middleware.rs @@ -1,5 +1,4 @@ -use crate::log; -use crate::{Middleware, Next, Request}; +use crate::{log, Middleware, Next, Request}; /// Log all incoming requests and responses. /// @@ -45,8 +44,13 @@ impl LogMiddleware { path: path, }); let start = std::time::Instant::now(); + let response = next.run(req).await; + let status = response.status(); + let status_str = format!("{} - {}", status as u16, status.canonical_reason()); + let duration = format!("{:?}", start.elapsed()); + if status.is_server_error() { if let Some(error) = response.error() { #[cfg(debug_assertions)] @@ -59,15 +63,15 @@ impl LogMiddleware { error_type: error.type_name(), method: method, path: path, - status: format!("{} - {}", status as u16, status.canonical_reason()), - duration: format!("{:?}", start.elapsed()), + status: status_str, + duration: duration, }); } else { log::error!("Internal error --> Response sent", { method: method, path: path, - status: format!("{} - {}", status as u16, status.canonical_reason()), - duration: format!("{:?}", start.elapsed()), + status: status_str, + duration: duration, }); } } else if status.is_client_error() { @@ -82,23 +86,23 @@ impl LogMiddleware { error_type: error.type_name(), method: method, path: path, - status: format!("{} - {}", status as u16, status.canonical_reason()), - duration: format!("{:?}", start.elapsed()), + status: status_str, + duration: duration, }); } else { log::warn!("Client error --> Response sent", { method: method, path: path, - status: format!("{} - {}", status as u16, status.canonical_reason()), - duration: format!("{:?}", start.elapsed()), + status: status_str, + duration: duration, }); } } else { log::info!("--> Response sent", { method: method, path: path, - status: format!("{} - {}", status as u16, status.canonical_reason()), - duration: format!("{:?}", start.elapsed()), + status: status_str, + duration: duration, }); } Ok(response)