@@ -399,7 +399,10 @@ impl RecordFormatter {
399399 }
400400 if self . cfg . always_show_time {
401401 self . format_timestamp_stub ( & mut fs, s) ;
402+ fs. complexity += 1 + self . ts_width . chars ;
402403 }
404+ } else {
405+ fs. complexity += 1 + self . ts_width . chars ;
403406 }
404407
405408 //
@@ -415,6 +418,7 @@ impl RecordFormatter {
415418 let level = level. or_else ( || self . cfg . always_show_level . then ( || LEVEL_UNKNOWN . as_bytes ( ) ) ) ;
416419 if let Some ( level) = level {
417420 fs. has_level = true ;
421+ fs. complexity += 3 + level. len ( ) ;
418422 self . format_level ( s, & mut fs, level) ;
419423 }
420424
@@ -428,17 +432,26 @@ impl RecordFormatter {
428432 s. batch ( |buf| buf. extend_from_slice ( logger. as_bytes ( ) ) )
429433 } ) ;
430434 s. batch ( |buf| buf. extend_from_slice ( self . cfg . punctuation . logger_name_separator . as_bytes ( ) ) ) ;
431- fs. complexity += logger. len ( ) + 4 ;
435+ fs. complexity += 2 + logger. len ( ) ;
432436 fs. first_line_used = true ;
433437 } ) ;
434438 }
439+
440+ // include caller into cumulative complexity calculation
441+ if let Some ( caller) = & rec. caller {
442+ fs. complexity += 3 + match caller {
443+ Caller :: Text ( text) => text. len ( ) ,
444+ Caller :: FileLine ( file, line) => file. len ( ) + line. len ( ) + 1 ,
445+ } ;
446+ }
447+
435448 //
436449 // message text
437450 //
438451 if let Some ( value) = & rec. message {
439452 match fs. transact ( s, |fs, s| self . format_message ( s, fs, * value) ) {
440453 Ok ( ( ) ) => {
441- fs. complexity += 4 ;
454+ fs. complexity += 2 ;
442455 fs. first_line_used = true ;
443456 }
444457 Err ( MessageFormatError :: ExpansionNeeded ) => {
@@ -967,7 +980,7 @@ impl<'a> FieldFormatter<'a> {
967980
968981 let ffv = self . begin ( s, key, value, fs) ;
969982
970- fs. complexity += key. len ( ) + 4 ;
983+ fs. complexity += key. len ( ) + 2 ;
971984
972985 let result = if self . rf . cfg . unescape_fields {
973986 self . format_value ( s, value, fs, filter, setting)
0 commit comments