Skip to content

Commit df95c31

Browse files
committed
draft: complexity tuning
1 parent 890e328 commit df95c31

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

src/formatting.rs

+16-3
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)