formatLog method

String formatLog({
  1. required LogLevel level,
  2. required String message,
  3. required DateTime timestamp,
  4. LogEvent? event,
  5. Map<String, dynamic>? context,
  6. StackTrace? stackTrace,
  7. bool useColors = true,
  8. bool useEmojis = true,
  9. bool showTimestamp = true,
  10. bool showContext = true,
})

Formats a log message with modern styling

Implementation

String formatLog({
  required LogLevel level,
  required String message,
  required DateTime timestamp,
  LogEvent? event,
  Map<String, dynamic>? context,
  StackTrace? stackTrace,
  bool useColors = true,
  bool useEmojis = true,
  bool showTimestamp = true,
  bool showContext = true,
}) {
  final buffer = StringBuffer();

  // Add emoji if enabled
  if (useEmojis) {
    buffer.write('${_levelEmojis[level] ?? '📝'} ');
  }

  // Add timestamp if enabled
  if (showTimestamp) {
    final timeStr = _formatTimestamp(timestamp, useColors);
    buffer.write('$timeStr ');
  }

  // Add level badge
  final levelBadge = _formatLevelBadge(level, useColors);
  buffer.write('$levelBadge ');

  // Add message
  final formattedMessage = _formatMessage(message, level, useColors);
  buffer.write(formattedMessage);

  // Add event information if present
  if (event != null) {
    final eventInfo = _formatEvent(event, useColors);
    buffer.write('\n$eventInfo');
  }

  // Add context if present
  if (context != null && showContext) {
    final contextInfo = _formatContext(context, useColors);
    buffer.write('\n$contextInfo');
  }

  // Add stack trace if present
  if (stackTrace != null) {
    final stackInfo = _formatStackTrace(stackTrace, useColors);
    buffer.write('\n$stackInfo');
  }

  return buffer.toString();
}