@@ -8,13 +8,31 @@ pub mod rolling_logger;
88
99pub type LoggerLevel = log:: Level ;
1010
11+ const HEADER_LENGTH : usize = 34 ;
1112pub fn get_log_header ( level : LoggerLevel ) -> String {
12- format ! (
13- "{} [{}] " ,
13+ get_log_header_with_length (
14+ level ,
1415 misc_helpers:: get_date_time_string_with_milliseconds ( ) ,
15- level
16- ) [ ..34 ]
17- . to_string ( )
16+ HEADER_LENGTH ,
17+ )
18+ }
19+
20+ fn get_log_header_with_length (
21+ level : LoggerLevel ,
22+ date_time_string : String ,
23+ length : usize ,
24+ ) -> String {
25+ let header = format ! ( "{date_time_string} [{level}] " )
26+ . chars ( )
27+ . take ( length)
28+ . collect :: < String > ( ) ;
29+
30+ // padding if the header is shorter than HEADER_LENGTH
31+ if header. len ( ) < length {
32+ let padding = " " . repeat ( length - header. len ( ) ) ;
33+ return format ! ( "{header}{padding}" ) ;
34+ }
35+ header
1836}
1937
2038const ASYNC_FUNCTION_NAME : & str = "{closure" ;
@@ -117,4 +135,26 @@ mod tests {
117135 // Check if the caller name is as expected
118136 assert_eq ! ( caller_name, expected_caller_name) ;
119137 }
138+
139+ #[ test]
140+ fn get_log_header_with_length_test ( ) {
141+ let header = super :: get_log_header_with_length (
142+ Level :: Info ,
143+ "2023-10-01 12:00:00.000" . to_string ( ) ,
144+ 34 ,
145+ ) ;
146+ assert_eq ! ( header, "2023-10-01 12:00:00.000 [INFO] " ) ;
147+ let header = super :: get_log_header_with_length (
148+ Level :: Error ,
149+ "2023-10-01 12:00:00.000" . to_string ( ) ,
150+ 34 ,
151+ ) ;
152+ assert_eq ! ( header, "2023-10-01 12:00:00.000 [ERROR] " ) ;
153+ let header = super :: get_log_header_with_length (
154+ Level :: Warn ,
155+ "2023-10-01 12:00:00.00" . to_string ( ) ,
156+ 34 ,
157+ ) ;
158+ assert_eq ! ( header, "2023-10-01 12:00:00.00 [WARN] " ) ;
159+ }
120160}
0 commit comments