cubetiq_dart_shared/lib/src/xlog/xlog_provider.dart

70 lines
1.5 KiB
Dart

import 'dart:convert';
import 'package:cubetiq/src/print/print_color.dart';
import 'package:cubetiq/text.dart';
import 'package:cubetiq/utils.dart';
enum XLogType { SUCCESS, INFO, ERROR, WARNING, DEBUG, TRACE }
abstract class XLogProvider {
bool isEnabled(XLogType type) {
return true;
}
/// Example Format
/// [TYPE] 2021-01-31 12:30:00.0000: PREFIX => DATA
void show(XLogType type, String? prefix, dynamic data, [List? args]) {
if (!isEnabled(type)) {
return;
}
prefix ??= '';
data = jsonEncode(data);
var content = '';
if (args == null || args.isEmpty) {
content = data;
} else {
content = StringUtils.textFormat(data, args: args) ?? 'null';
}
var text = '[$type] ${nowToString()}: $prefix => $content'.trim();
switch (type) {
case XLogType.SUCCESS:
PrintColor.green(text);
break;
case XLogType.INFO:
PrintColor.cyan(text);
break;
case XLogType.WARNING:
PrintColor.yellow(text);
break;
case XLogType.ERROR:
PrintColor.red(text);
break;
case XLogType.DEBUG:
PrintColor.gray(text);
break;
case XLogType.TRACE:
PrintColor.magenta(text);
break;
default:
print(text);
break;
}
}
void success(dynamic data, [List? args]);
void info(dynamic data, [List? args]);
void warning(dynamic data, [List? args]);
void debug(dynamic data, [List? args]);
void error(dynamic data, [List? args]);
void trace(dynamic data, [List? args]);
}