dart-app-core/lib/core/log.dart
2023-03-19 09:08:43 +09:00

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