log method
Formats the given LogRecord into a list of strings.
This method is called for each log event. The returned list of strings will be output line-by-line by the logging framework.
Each string in the list represents a line, allowing multi-line logs (such as those with stack traces or structured JSON).
Implementations should avoid side effects and keep formatting consistent.
Example return:
[
"[INFO] Application started",
"Details: version 1.0.0"
]
Implementation
@override
List<String> log(LogRecord record) {
final color = levelColor(record.level);
final buffer = <String>[];
buffer.add(color('β${'β' * (lineLength - 1)}'));
for (final step in config.steps) {
final content = getStepValue(step, record);
if (content != null) {
if (step == LogStep.STACKTRACE) {
buffer.add(color('β π ${label("CALL STACK")}: '));
final stackLines = extractStack(record.stackTrace, excludePaths);
for (final line in stackLines) {
buffer.add(color('β β’ $line'));
}
} else {
buffer.add(color('β $content'));
}
}
}
buffer.add(color('β${'β' * (lineLength - 1)}'));
return buffer;
}