75 lines
1.6 KiB
Dart
75 lines
1.6 KiB
Dart
import 'package:dart_framework/core/isolate_manager.dart';
|
|
import 'package:dart_framework/io/log_writer_base.dart';
|
|
import 'package:dart_framework/utils/string_util.dart';
|
|
|
|
void log(String message) {
|
|
_logSend(message, LogType.verbose);
|
|
}
|
|
|
|
void logWarning(String message) {
|
|
_logSend(message, LogType.warning);
|
|
}
|
|
|
|
void logError(String message) {
|
|
_logSend(message, LogType.error);
|
|
}
|
|
|
|
void _logSend(String message, LogType type) {
|
|
var item = LogItem(message, type);
|
|
Log.to.append(item);
|
|
}
|
|
|
|
enum LogType { verbose, error, warning }
|
|
|
|
class LogItem {
|
|
late String message;
|
|
late String date;
|
|
late LogType type;
|
|
|
|
LogItem(this.message, this.type) {
|
|
date = getDates();
|
|
}
|
|
@override
|
|
String toString() {
|
|
return '[$date][${type.name}] $message';
|
|
}
|
|
}
|
|
|
|
class Log {
|
|
int index = 0;
|
|
StringBuffer buffer = StringBuffer();
|
|
Log._privateConstructor() {
|
|
LogWriterBase.start(_onWriterEvent);
|
|
}
|
|
static final Log _instance = Log._privateConstructor();
|
|
static Log get to => _instance;
|
|
|
|
final List<LogItem> logs = [];
|
|
|
|
Log() {
|
|
LogWriterBase.start(_onWriterEvent);
|
|
}
|
|
|
|
void _onWriterEvent(IsoMessege message) {
|
|
if (message.type == 'request') {
|
|
if (index != logs.length) {
|
|
for (int i = logs.length - index - 1; i >= 0; --i) {
|
|
buffer.writeln(logs[i].toString());
|
|
}
|
|
index = logs.length;
|
|
LogWriterBase.write(buffer.toString());
|
|
buffer.clear();
|
|
}
|
|
}
|
|
}
|
|
|
|
void append(LogItem item) {
|
|
logs.insert(0, item);
|
|
}
|
|
|
|
void clear() {
|
|
logs.clear();
|
|
index = 0;
|
|
log('Log Restarted.');
|
|
}
|
|
}
|