diff --git a/lib/src/utils/logs.dart b/lib/src/utils/logs.dart index a6a64be5..58314a71 100644 --- a/lib/src/utils/logs.dart +++ b/lib/src/utils/logs.dart @@ -21,50 +21,123 @@ * SOFTWARE. */ -import 'package:logger/logger.dart'; +enum Level { + wtf, + error, + warning, + info, + debug, + verbose, +} -class Logs extends Logger { +class Logs { static final Logs _singleton = Logs._internal(); factory Logs() { return _singleton; } - set level(Level newLevel) => Logger.level = newLevel; + Level level = Level.info; - final List outputEvents = []; + final List outputEvents = []; - Logs._internal() - : super( - printer: _MatrixSdkPrinter(), - filter: _MatrixSdkFilter(), - output: _CacheOutput(), - ); -} + Logs._internal(); -class _MatrixSdkFilter extends LogFilter { - @override - bool shouldLog(LogEvent event) => event.level.index >= Logger.level.index; -} - -class _CacheOutput extends ConsoleOutput { - @override - void output(OutputEvent event) { - Logs().outputEvents.add(event); - super.output(event); - } -} - -class _MatrixSdkPrinter extends PrettyPrinter { - _MatrixSdkPrinter() : super(methodCount: 0, lineLength: 100); - - @override - List log(LogEvent event) { - if (event.error == null && event.stackTrace == null) { - return [ - '${PrettyPrinter.levelColors[event.level]}${PrettyPrinter.levelEmojis[event.level]} ${event.message.toString()}' - ]; + void addLogEvent(LogEvent logEvent) { + logEvent.printOut(); + if (logEvent.level.index >= level.index) { + outputEvents.add(logEvent); + } + } + + void wtf(String title, [Object exception, StackTrace stackTrace]) => + addLogEvent( + LogEvent( + title, + exception: exception, + stackTrace: stackTrace, + level: Level.wtf, + ), + ); + + void e(String title, [Object exception, StackTrace stackTrace]) => + addLogEvent( + LogEvent( + title, + exception: exception, + stackTrace: stackTrace, + level: Level.error, + ), + ); + + void w(String title, [Object exception, StackTrace stackTrace]) => + addLogEvent( + LogEvent( + title, + exception: exception, + stackTrace: stackTrace, + level: Level.warning, + ), + ); + + void i(String title, [Object exception, StackTrace stackTrace]) => + addLogEvent( + LogEvent( + title, + exception: exception, + stackTrace: stackTrace, + level: Level.info, + ), + ); + + void d(String title, [Object exception, StackTrace stackTrace]) => + addLogEvent( + LogEvent( + title, + exception: exception, + stackTrace: stackTrace, + level: Level.debug, + ), + ); + + void v(String title, [Object exception, StackTrace stackTrace]) => + addLogEvent( + LogEvent( + title, + exception: exception, + stackTrace: stackTrace, + level: Level.verbose, + ), + ); +} + +// ignore: avoid_print +class LogEvent { + final String title; + final Object exception; + final StackTrace stackTrace; + final Level level; + + LogEvent( + this.title, { + this.exception, + this.stackTrace, + this.level = Level.debug, + }); + + void printOut() { + var logsStr = + '# [${level.toString().split('.').last.toUpperCase()}] $title'; + if (exception != null) { + logsStr += ' - ' + exception.toString(); + } + // ignore: avoid_print + print(logsStr); + if (stackTrace != null) { + // ignore: avoid_print + print('## Stacktrace:'); + // ignore: avoid_print + print(stackTrace.toString()); } - return super.log(event); } } diff --git a/pubspec.yaml b/pubspec.yaml index a4f92970..0ef76bf5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -8,7 +8,6 @@ environment: dependencies: http: ^0.13.0 - logger: ^1.0.0 mime: ^1.0.0 dev_dependencies: diff --git a/test/matrix_api_test.dart b/test/matrix_api_test.dart index 31b54564..e58464a6 100644 --- a/test/matrix_api_test.dart +++ b/test/matrix_api_test.dart @@ -22,7 +22,6 @@ */ import 'dart:typed_data'; -import 'package:logger/logger.dart'; import 'package:matrix_api_lite/fake_matrix_api.dart'; import 'package:matrix_api_lite/matrix_api_lite.dart'; import 'package:test/test.dart'; @@ -37,11 +36,11 @@ void main() { Logs().w('Test log'); Logs().e('Test log'); Logs().wtf('Test log'); - Logs().v('Test log', Exception('Test')); + Logs().v('Test log', Exception('There has been a verbose')); Logs().d('Test log', Exception('Test')); - Logs().w('Test log', Exception('Test')); - Logs().e('Test log', Exception('Test')); - Logs().wtf('Test log', Exception('Test')); + Logs().w('Test log', Exception('Very bad error')); + Logs().e('Test log', Exception('Test'), StackTrace.current); + Logs().wtf('Test log', Exception('Test'), StackTrace.current); }); Logs().level = Level.error; final matrixApi = MatrixApi( diff --git a/test/try_get_map_extension_test.dart b/test/try_get_map_extension_test.dart index 45a4503b..d38a1e68 100644 --- a/test/try_get_map_extension_test.dart +++ b/test/try_get_map_extension_test.dart @@ -21,7 +21,6 @@ * SOFTWARE. */ -import 'package:logger/logger.dart'; import 'package:matrix_api_lite/matrix_api_lite.dart'; import 'package:test/test.dart';