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) ); }