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 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.'); } }