stdIOLogListener function

void stdIOLogListener (LogRecord rec)

A listener that output log records to stdout and stderr.

To be consistent with package: build_runner, only SEVERE records will be written to stderr.

This needs some understanding of package: logging.

Implementation

void stdIOLogListener(LogRecord rec) {
  if (rec.message.contains(RecordPrefix.severe)) {
    stderr.write(rec.message
        .replaceFirst(RecordPrefix.severe, red.wrap(RecordPrefix.severe)));
  } else if (rec.message.contains(RecordPrefix.warning)) {
    stdout.write(rec.message
        .replaceFirst(RecordPrefix.warning, yellow.wrap(RecordPrefix.warning)));
  } else if (rec.message.contains(RecordPrefix.info)) {
    stdout.write(rec.message
        .replaceFirst(RecordPrefix.info, cyan.wrap(RecordPrefix.info)));
  } else {
    // A message which is not a starting line won't have the prefix that indicates its level.
    if (rec.level < Level.SEVERE) {
      stdout.write(rec.message);
    } else {
      stderr.write(rec.message);
    }
  }
}