change: Remove logger
The logger package has a lot of issues. The colors are not working in web and on iOS. Emojis are not working on some platforms. It introduced a not very important library in a SDk which is intended to be as minimal as possible. This simplifies the logging to a format which works everywhere. The # Syntax makes it also look good as markdown. It is not very far away from the default syntax of errors and stacktraces. It still provides several log levels, the same API and a list of output events for the logviewer.
This commit is contained in:
parent
adb6d0a564
commit
c70b149c20
|
|
@ -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<OutputEvent> outputEvents = [];
|
||||
final List<LogEvent> outputEvents = [];
|
||||
|
||||
Logs._internal()
|
||||
: super(
|
||||
printer: _MatrixSdkPrinter(),
|
||||
filter: _MatrixSdkFilter(),
|
||||
output: _CacheOutput(),
|
||||
Logs._internal();
|
||||
|
||||
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,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
class _MatrixSdkFilter extends LogFilter {
|
||||
@override
|
||||
bool shouldLog(LogEvent event) => event.level.index >= Logger.level.index;
|
||||
}
|
||||
// ignore: avoid_print
|
||||
class LogEvent {
|
||||
final String title;
|
||||
final Object exception;
|
||||
final StackTrace stackTrace;
|
||||
final Level level;
|
||||
|
||||
class _CacheOutput extends ConsoleOutput {
|
||||
@override
|
||||
void output(OutputEvent event) {
|
||||
Logs().outputEvents.add(event);
|
||||
super.output(event);
|
||||
}
|
||||
}
|
||||
LogEvent(
|
||||
this.title, {
|
||||
this.exception,
|
||||
this.stackTrace,
|
||||
this.level = Level.debug,
|
||||
});
|
||||
|
||||
class _MatrixSdkPrinter extends PrettyPrinter {
|
||||
_MatrixSdkPrinter() : super(methodCount: 0, lineLength: 100);
|
||||
|
||||
@override
|
||||
List<String> log(LogEvent event) {
|
||||
if (event.error == null && event.stackTrace == null) {
|
||||
return [
|
||||
'${PrettyPrinter.levelColors[event.level]}${PrettyPrinter.levelEmojis[event.level]} ${event.message.toString()}'
|
||||
];
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ environment:
|
|||
|
||||
dependencies:
|
||||
http: ^0.13.0
|
||||
logger: ^1.0.0
|
||||
mime: ^1.0.0
|
||||
|
||||
dev_dependencies:
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@
|
|||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
import 'package:logger/logger.dart';
|
||||
import 'package:matrix_api_lite/matrix_api_lite.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue