Line data Source code
1 : import 'dart:developer' as dev;
2 : // ignore: depend_on_referenced_packages
3 : import 'package:logging/logging.dart' show Level;
4 :
5 : // TODO: Improve
6 : const red = "31";
7 : const blue = "34";
8 : const magenta = "35";
9 : const cyan = "36";
10 :
11 : abstract class Logger {
12 14 : static void log(String message, [String? location]) {
13 14 : dev.log(
14 28 : "[INFO]${_formatMessage(message, location)}",
15 14 : level: Level.INFO.value,
16 : );
17 : }
18 :
19 8 : static void logFetch(String message, [String? location]) {
20 8 : dev.log(
21 24 : _colorize("[FETCH]${_formatMessage(message, location)}", cyan),
22 8 : level: Level.SHOUT.value,
23 : );
24 : }
25 :
26 3 : static void logError(
27 : Object? error, {
28 : StackTrace? s,
29 : String? hint,
30 : }) {
31 3 : dev.log(
32 12 : _colorize("[ERROR]${_formatMessage(error.toString(), hint)}", red),
33 3 : level: Level.SEVERE.value,
34 : stackTrace: s,
35 3 : time: DateTime.now(),
36 : error: error,
37 : );
38 : }
39 :
40 2 : static void logWarning(String message, [String? location]) {
41 2 : dev.log(
42 6 : _colorize("[WARNING]${_formatMessage(message, location)}", blue),
43 2 : level: Level.WARNING.value,
44 : );
45 : }
46 :
47 15 : static String _formatMessage(String message, String? location) {
48 : if (location == null) {
49 : return message;
50 : }
51 3 : return " @$location: $message";
52 : }
53 :
54 11 : static String _colorize(String message, String color) {
55 11 : return "\x1B[${color}m$message\x1B[0m";
56 : }
57 : }
|