From 7d659229f6fb5a20e0eb8e5a45ad9460d5720477 Mon Sep 17 00:00:00 2001 From: fawn Date: Sun, 20 Aug 2023 16:46:45 +0300 Subject: [PATCH] feat: change log level based on response status code --- actix-web/src/middleware/logger.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/actix-web/src/middleware/logger.rs b/actix-web/src/middleware/logger.rs index 06d26617a..033b24ae9 100644 --- a/actix-web/src/middleware/logger.rs +++ b/actix-web/src/middleware/logger.rs @@ -16,7 +16,7 @@ use actix_service::{Service, Transform}; use actix_utils::future::{ready, Ready}; use bytes::Bytes; use futures_core::ready; -use log::{debug, warn}; +use log::{debug, warn, Level}; use pin_project_lite::pin_project; use regex::{Regex, RegexSet}; use time::{format_description::well_known::Rfc3339, OffsetDateTime}; @@ -363,6 +363,12 @@ where debug!("Error in response: {:?}", error); } + let level = match res.response().status().as_u16() { + 300..=499 => Level::Warn, + 500..=599 => Level::Error, + _ => Level::Info, + }; + let res = if let Some(ref mut format) = this.format { // to avoid polluting all the Logger types with the body parameter we swap the body // out temporarily since it's not usable in custom response functions anyway @@ -393,6 +399,7 @@ where format, size: 0, log_target, + level, }))) } } @@ -405,6 +412,7 @@ pin_project! { size: usize, time: OffsetDateTime, log_target: Cow<'static, str>, + level: Level, } impl PinnedDrop for StreamLog { @@ -417,8 +425,9 @@ pin_project! { Ok(()) }; - log::info!( + log::log!( target: this.log_target.as_ref(), + this.level, "{}", FormatDisplay(&render) ); }