You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.7 KiB
Dart
64 lines
1.7 KiB
Dart
import 'dart:convert';
|
|
|
|
import 'package:logger/logger.dart';
|
|
|
|
Logger getLogger() {
|
|
// Logger.level = Level.debug;
|
|
Logger.level = Level.info;
|
|
return Logger(
|
|
printer: MyLogPrinter(
|
|
printTime: true,
|
|
colors: true,
|
|
),
|
|
);
|
|
}
|
|
|
|
class MyLogPrinter extends LogPrinter {
|
|
static final levelPrefixes = {
|
|
Level.trace: ' [TRACE]',
|
|
Level.debug: ' [DEBUG]',
|
|
Level.info: ' [INFO]',
|
|
Level.warning: '[WARNING]',
|
|
Level.error: ' [ERROR]',
|
|
Level.fatal: ' [FATAL]',
|
|
};
|
|
|
|
static final levelColors = {
|
|
Level.trace: AnsiColor.fg(AnsiColor.grey(0.5)),
|
|
Level.debug: const AnsiColor.none(),
|
|
Level.info: const AnsiColor.fg(12),
|
|
Level.warning: const AnsiColor.fg(208),
|
|
Level.error: const AnsiColor.fg(196),
|
|
Level.fatal: const AnsiColor.fg(199),
|
|
};
|
|
|
|
final bool printTime;
|
|
final bool colors;
|
|
|
|
MyLogPrinter({this.printTime = false, this.colors = true});
|
|
|
|
@override
|
|
List<String> log(LogEvent event) {
|
|
var messageStr = _stringifyMessage(event.message);
|
|
var errorStr = event.error != null ? ' ERROR: ${event.error}' : '';
|
|
var timeStr = printTime ? event.time.toIso8601String() : '';
|
|
return ['${_labelFor(event.level)} $timeStr $messageStr$errorStr'];
|
|
}
|
|
|
|
String _labelFor(Level level) {
|
|
var prefix = levelPrefixes[level]!;
|
|
var color = levelColors[level]!;
|
|
|
|
return colors ? color(prefix) : prefix;
|
|
}
|
|
|
|
String _stringifyMessage(dynamic message) {
|
|
final finalMessage = message is Function ? message() : message;
|
|
if (finalMessage is Map || finalMessage is Iterable) {
|
|
var encoder = const JsonEncoder.withIndent(null);
|
|
return encoder.convert(finalMessage);
|
|
} else {
|
|
return finalMessage.toString();
|
|
}
|
|
}
|
|
} |