buildLogPlainText function
Builds a full plain-text export of entry covering general info,
stack trace, and data sections.
When isConcise is true (default), the stack trace is passed through
normalizeStackTrace to collapse framework internals while preserving
boundary frames. When false, the raw stack trace is included as-is.
Implementation
String buildLogPlainText(LogEntry entry, {bool isConcise = true}) {
final b = StringBuffer()
..writeln('=== General ===')
..writeln('Message: ${entry.message}')
..writeln('Level: ${entry.level.name}')
..writeln('Timestamp: ${entry.timestamp.toIso8601String()}');
if (entry.activeRoute != null) {
b.writeln('Active Route: ${entry.activeRoute}');
}
b.writeln('\n=== Stack Trace ===');
final stackTrace = entry.stackTrace;
if (stackTrace != null && stackTrace.isNotEmpty) {
b.writeln(isConcise ? normalizeStackTrace(stackTrace) : stackTrace);
} else {
b.writeln('(none)');
}
b.writeln('\n=== Data ===');
final data = entry.data;
if (data != null && data.isNotEmpty) {
data.forEach((k, v) => b.writeln('$k: $v'));
} else {
b.writeln('(none)');
}
return b.toString().trimRight();
}