format method
Format a log entry into a string
Implementation
@override
String format(LogEntry entry) {
if (!enableColors) {
return super.format(entry);
}
final buffer = StringBuffer();
// Timestamp (gray)
if (includeTimestamp) {
final timestamp = timestampFormat?.call(entry.timestamp) ??
_defaultTimestampFormat(entry.timestamp);
buffer.write(AnsiColors.gray('[${timestamp}] '));
}
// Log level (colored by level)
if (includeLevel) {
final levelColor = _getLevelColor(entry.level);
buffer.write(levelColor('[${entry.level.name}] '));
}
// Logger name (cyan)
if (includeLoggerName && entry.loggerName != null) {
buffer.write(AnsiColors.cyan('[${entry.loggerName}] '));
}
// Tag (magenta)
if (includeTag && entry.tag != null) {
buffer.write(AnsiColors.magenta('[${entry.tag}] '));
}
// Message (colored by level)
final messageColor = _getMessageColor(entry.level);
buffer.write(messageColor(entry.message));
// Error (red)
if (entry.error != null) {
buffer.write(AnsiColors.red('\nError: ${entry.error}'));
}
// Stack trace (red)
if (entry.stackTrace != null) {
buffer.write(AnsiColors.red('\nStack trace:\n${entry.stackTrace}'));
}
// Context (gray)
if (entry.context.isNotEmpty) {
buffer.write(AnsiColors.gray('\nContext: ${entry.context}'));
}
return buffer.toString();
}