stdIOLogListener function
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);
}
}
}