format method

  1. @override
String format(
  1. LogEntry entry
)
override

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();
}