diff --git a/proxy_agent_shared/src/logger.rs b/proxy_agent_shared/src/logger.rs index 165d48dd..f80ccf63 100644 --- a/proxy_agent_shared/src/logger.rs +++ b/proxy_agent_shared/src/logger.rs @@ -8,13 +8,31 @@ pub mod rolling_logger; pub type LoggerLevel = log::Level; +const HEADER_LENGTH: usize = 34; pub fn get_log_header(level: LoggerLevel) -> String { - format!( - "{} [{}] ", + get_log_header_with_length( + level, misc_helpers::get_date_time_string_with_milliseconds(), - level - )[..34] - .to_string() + HEADER_LENGTH, + ) +} + +fn get_log_header_with_length( + level: LoggerLevel, + date_time_string: String, + length: usize, +) -> String { + let header = format!("{date_time_string} [{level}] ") + .chars() + .take(length) + .collect::(); + + // padding if the header is shorter than HEADER_LENGTH + if header.len() < length { + let padding = " ".repeat(length - header.len()); + return format!("{header}{padding}"); + } + header } const ASYNC_FUNCTION_NAME: &str = "{closure"; @@ -117,4 +135,26 @@ mod tests { // Check if the caller name is as expected assert_eq!(caller_name, expected_caller_name); } + + #[test] + fn get_log_header_with_length_test() { + let header = super::get_log_header_with_length( + Level::Info, + "2023-10-01 12:00:00.000".to_string(), + 34, + ); + assert_eq!(header, "2023-10-01 12:00:00.000 [INFO] "); + let header = super::get_log_header_with_length( + Level::Error, + "2023-10-01 12:00:00.000".to_string(), + 34, + ); + assert_eq!(header, "2023-10-01 12:00:00.000 [ERROR] "); + let header = super::get_log_header_with_length( + Level::Warn, + "2023-10-01 12:00:00.00".to_string(), + 34, + ); + assert_eq!(header, "2023-10-01 12:00:00.00 [WARN] "); + } }