decorateMessage method

List<LogLine> decorateMessage(
  1. String formattedMessage,
  2. LogLevel logLevel,
  3. String tag,
  4. DateTime? time,
  5. String? formattedError,
  6. String? formattedStackTrace,
)

Implementation

List<LogLine> decorateMessage(
  String formattedMessage,
  LogLevel logLevel,
  String tag,
  DateTime? time,
  String? formattedError,
  String? formattedStackTrace,
) {
  ANSIColor color;
  switch (logLevel) {
    case LogLevel.debug:
      color = debugColors;
      break;
    case LogLevel.info:
      color = infoColors;
      break;
    case LogLevel.warning:
      color = warningColors;
      break;
    case LogLevel.error:
      color = errorColors;
      break;
    default:
      color = ANSIColors.white;
  }

  final lines = <LogLine>[];
  final border = '  ${'─' * columns}';

  final header =
      'LEVEL: ${logLevel.name.toUpperCase()} - Time: ${time ?? DateTime.now()}';
  final decoratedHeader =
      ' | $header ${' ' * ((columns - 3) - header.length)} |';

  lines.add(LogLine(content: border, tag: tag, color: color));
  lines.add(LogLine(content: decoratedHeader, tag: tag, color: color));
  lines.add(LogLine(content: border, tag: tag, color: color));

  for (var line in formattedMessage.split('\n')) {
    lines.add(LogLine(content: " | $line", tag: tag, color: color));
  }

  if (formattedError != null) {
    lines.add(LogLine(content: border, tag: tag, color: color));
    for (var line in formattedError.split('\n')) {
      lines.add(LogLine(content: " | $line", tag: tag, color: color));
    }
  }

  if (formattedStackTrace != null) {
    lines.add(LogLine(content: border, tag: tag, color: color));
    lines.add(LogLine(content: " | StackTrace: ", tag: tag, color: color));
    for (var line in formattedStackTrace.split('\n')) {
      lines.add(LogLine(content: " | $line", tag: tag, color: color));
    }
  }
  lines.add(LogLine(content: border, tag: tag, color: color));
  lines.add(LogLine(content: "", tag: "", color: color));
  return lines;
}