[jnigen] colorized warning in logger (https://github.com/dart-lang/jnigen/issues/107)
diff --git a/pkgs/jnigen/lib/src/logging/logging.dart b/pkgs/jnigen/lib/src/logging/logging.dart index db8b713..bf4bbe9 100644 --- a/pkgs/jnigen/lib/src/logging/logging.dart +++ b/pkgs/jnigen/lib/src/logging/logging.dart
@@ -6,31 +6,42 @@ import 'package:logging/logging.dart'; const _ansiRed = '\x1b[31m'; +const _ansiYellow = '\x1b[33m'; const _ansiDefault = '\x1b[39;49m'; +String _colorize(String message, String colorCode) { + if (stderr.supportsAnsiEscapes) { + return '$colorCode$message$_ansiDefault'; + } + return message; +} + Logger log = Logger('jnigen'); +/// Set logging level to [level] and initialize the logger. void setLoggingLevel(Level level) { Logger.root.level = level; Logger.root.onRecord.listen((r) { var message = '(${r.loggerName}) ${r.level.name}: ${r.message}'; - if (level == Level.SHOUT || level == Level.SEVERE) { - message = '$_ansiRed$message$_ansiDefault'; + if ((r.level == Level.SHOUT || r.level == Level.SEVERE)) { + message = _colorize(message, _ansiRed); + } else if (r.level == Level.WARNING) { + message = _colorize(message, _ansiYellow); } stderr.writeln(message); }); } +/// Prints [message] without logging information. +/// +/// Primarily used in printing output of failed commands. void printError(Object? message) { - if (stderr.supportsAnsiEscapes) { - message = '$_ansiRed$message$_ansiDefault'; - } - stderr.writeln(message); + stderr.writeln(_colorize(message.toString(), _ansiRed)); } extension FatalErrors on Logger { void fatal(Object? message, {int exitCode = 2}) { - message = '${_ansiRed}Fatal: $message$_ansiDefault'; + message = _colorize('Fatal: $message', _ansiRed); stderr.writeln(message); exit(exitCode); }