Logger constructor
Implementation
Logger(this._logLevel, this._dartEnv, {String label = 'mineral'})
: _label = label {
_logger.level = _logLevel.level;
_logger.onRecord.listen((record) {
final time = DateFormat.Hms().format(record.time);
List<Sequence> makeMessage(
String messageType,
Color messageColor,
List<Sequence> message,
) {
return [
SetStyles(Style.foreground(Color.brightBlack)),
Print(time),
SetStyles.reset,
Print(' '),
SetStyles(Style.foreground(messageColor)),
Print('[$_label]'),
SetStyles.reset,
Print(' '),
SetStyles(Style.foreground(messageColor)),
Print(messageType),
SetStyles.reset,
Print(': '),
...message,
SetStyles.reset,
AsciiControl.lineFeed,
];
}
final message = switch (record.level) {
logging.Level.FINEST => makeMessage('trace', Color.white, [
SetStyles(Style.foreground(Color.brightBlack)),
Print(record.message),
]),
logging.Level.SHOUT => makeMessage('fatal', Color.brightRed, [
Print(record.message),
]),
logging.Level.SEVERE => makeMessage('error', Color.red, [
Print(record.message),
]),
logging.Level.WARNING => makeMessage('warn', Color.yellow, [
Print(record.message),
]),
logging.Level.INFO => makeMessage(
'info',
Color.fromRGB(140, 169, 238),
[Print(record.message)],
),
_ => makeMessage('unknown', Color.blue, [Print(record.message)]),
};
if (_dartEnv == 'production') {
message.writeWithoutAnsi();
return;
}
if (_supportsColor) {
stdout.writeAnsiAll(message);
return;
}
message.writeWithoutAnsi();
});
}