format method

  1. @override
void format(
  1. LogRecord record,
  2. ConsoleMessageBuffer buffer
)
override

Formats the given record by writing to the buffer.

Implementations should build a span tree from the record and render it:

void format(LogRecord record, ConsoleMessageBuffer buffer) {
  final span = MyLogSpan(record).build();
  renderSpan(span, buffer);
}

Implementation

@override
void format(LogRecord record, ConsoleMessageBuffer buffer) {
  final span = buildSpan(record);

  // Apply formatter's default transformers
  for (final transformer in spanTransformers) {
    transformer(span, record);
  }

  // Apply per-log transformers from formatOptions
  final perLogTransformers = record.formatOptions
      ?.whereType<SpanFormatOptions>()
      .expand((options) => options.spanTransformers);
  if (perLogTransformers != null) {
    for (final transformer in perLogTransformers) {
      transformer(span, record);
    }
  }

  // Transformers may wrap the original root in a new parent span.
  // Always render starting from the current root so wrappers (e.g. Bordered)
  // that become ancestors of the original span are included.
  renderSpan(span.root, buffer);
}