forked from cubetiq/cubetiq_dart_shared
Task: Add XLog and factory logger with simple implemented with print and add functions more for utils and print color that using ansi color lib and export some useful methods and functions
This commit is contained in:
parent
881aaae3ad
commit
19ddc8114c
|
@ -0,0 +1,33 @@
|
|||
import 'package:cubetiq/xlog.dart';
|
||||
|
||||
void main(List<String> args) {
|
||||
XLog.error('My some error here {0} and me {1}', ['Sambo', 'Chea']);
|
||||
|
||||
XLog.debug('My some error here {0} and me {1}', ['Sambo', 'Chea']);
|
||||
|
||||
XLog.info('My some error here {0} and me {1}', ['Sambo', 'Chea']);
|
||||
|
||||
XLog.success('My some error here {0} and me {1}', ['Sambo', 'Chea']);
|
||||
|
||||
XLog.trace('My some error here {0} and me {1}', ['Sambo', 'Chea']);
|
||||
|
||||
XLog.warning('My some error here {0} and me {1}', ['Sambo', 'Chea']);
|
||||
|
||||
XLog.warning(null);
|
||||
|
||||
var json = Person(1, 'Sambo');
|
||||
|
||||
XLog.warning(json, [null, null]);
|
||||
}
|
||||
|
||||
class Person {
|
||||
final id;
|
||||
final name;
|
||||
|
||||
Person(this.id, this.name);
|
||||
|
||||
Map toJson() => {
|
||||
'id': id,
|
||||
'name': name,
|
||||
};
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
library cubetiq;
|
||||
library configurable;
|
||||
|
||||
export 'src/configurable/configurable.dart';
|
||||
export 'src/configurable/configuration_provider.dart';
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
library print_color;
|
||||
|
||||
export 'src/print/print_color.dart';
|
|
@ -0,0 +1,55 @@
|
|||
import 'package:ansicolor/ansicolor.dart';
|
||||
|
||||
AnsiPen _green = AnsiPen()..green();
|
||||
AnsiPen _red = AnsiPen()..red();
|
||||
AnsiPen _white = AnsiPen()..white();
|
||||
AnsiPen _yellow = AnsiPen()..yellow();
|
||||
AnsiPen _gray = AnsiPen()..gray();
|
||||
AnsiPen _magenta = AnsiPen()..magenta();
|
||||
AnsiPen _cyan = AnsiPen()..cyan();
|
||||
|
||||
class PrintColor {
|
||||
static final _pattern = RegExp('.{1,800}');
|
||||
|
||||
static void white(text) {
|
||||
return _pattern
|
||||
.allMatches(text)
|
||||
.forEach((match) => print(_white(match.group(0).toString())));
|
||||
}
|
||||
|
||||
static void green(text) {
|
||||
return _pattern
|
||||
.allMatches(text)
|
||||
.forEach((match) => print(_green(match.group(0).toString())));
|
||||
}
|
||||
|
||||
static void red(text) {
|
||||
return _pattern
|
||||
.allMatches(text)
|
||||
.forEach((match) => print(_red(match.group(0).toString())));
|
||||
}
|
||||
|
||||
static void yellow(text) {
|
||||
return _pattern
|
||||
.allMatches(text)
|
||||
.forEach((match) => print(_yellow(match.group(0).toString())));
|
||||
}
|
||||
|
||||
static void gray(text) {
|
||||
return _pattern
|
||||
.allMatches(text)
|
||||
.forEach((match) => print(_gray(match.group(0).toString())));
|
||||
}
|
||||
|
||||
static void magenta(text) {
|
||||
return _pattern
|
||||
.allMatches(text)
|
||||
.forEach((match) => print(_magenta(match.group(0).toString())));
|
||||
}
|
||||
|
||||
static void cyan(text) {
|
||||
return _pattern
|
||||
.allMatches(text)
|
||||
.forEach((match) => print(_cyan(match.group(0).toString())));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
DateTime now() => DateTime.now();
|
||||
String nowToString() => now().toString();
|
|
@ -0,0 +1,37 @@
|
|||
import 'xlog_provider.dart';
|
||||
|
||||
class SimpleXLogProvider with XLogProvider {
|
||||
final String? _prefix;
|
||||
|
||||
SimpleXLogProvider(this._prefix);
|
||||
|
||||
@override
|
||||
void debug(data, [List? args]) {
|
||||
show(XLogType.DEBUG, _prefix, data, args);
|
||||
}
|
||||
|
||||
@override
|
||||
void error(data, [List? args]) {
|
||||
show(XLogType.ERROR, _prefix, data, args);
|
||||
}
|
||||
|
||||
@override
|
||||
void info(data, [List? args]) {
|
||||
show(XLogType.INFO, _prefix, data, args);
|
||||
}
|
||||
|
||||
@override
|
||||
void success(data, [List? args]) {
|
||||
show(XLogType.SUCCESS, _prefix, data, args);
|
||||
}
|
||||
|
||||
@override
|
||||
void trace(data, [List? args]) {
|
||||
show(XLogType.TRACE, _prefix, data, args);
|
||||
}
|
||||
|
||||
@override
|
||||
void warning(data, [List? args]) {
|
||||
show(XLogType.WARNING, _prefix, data, args);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
import 'xlog_factory.dart';
|
||||
import 'xlog_provider.dart';
|
||||
|
||||
class XLog {
|
||||
static XLogProvider logger = XLogFactory.getSimpleLogger('XLOG');
|
||||
|
||||
static void success(dynamic data, [List? args]) {
|
||||
logger.success(data, args);
|
||||
}
|
||||
|
||||
static void info(dynamic data, [List? args]) {
|
||||
logger.info(data, args);
|
||||
}
|
||||
|
||||
static void warning(dynamic data, [List? args]) {
|
||||
logger.warning(data, args);
|
||||
}
|
||||
|
||||
static void error(dynamic data, [List? args]) {
|
||||
logger.error(data, args);
|
||||
}
|
||||
|
||||
static void debug(dynamic data, [List? args]) {
|
||||
logger.debug(data, args);
|
||||
}
|
||||
|
||||
static void trace(dynamic data, [List? args]) {
|
||||
logger.trace(data, args);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
import 'simple_xlog_provider.dart';
|
||||
import 'xlog_provider.dart';
|
||||
|
||||
class XLogFactory {
|
||||
static XLogProvider getSimpleLogger(String? prefix) {
|
||||
return SimpleXLogProvider(prefix);
|
||||
}
|
||||
|
||||
static XLogProvider getLogger(XLogProvider provider) {
|
||||
return provider;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,69 @@
|
|||
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) ?? '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]);
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
library cubetiq;
|
||||
library text;
|
||||
|
||||
export 'src/text/text_formatter.dart';
|
||||
export 'src/text/extension.dart';
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
library utils;
|
||||
|
||||
export 'src/util/datetime_functions.dart';
|
|
@ -0,0 +1,6 @@
|
|||
library xlog;
|
||||
|
||||
export 'src/xlog/xlog.dart';
|
||||
export 'src/xlog/xlog_provider.dart';
|
||||
export 'src/xlog/simple_xlog_provider.dart';
|
||||
export 'src/xlog/xlog_factory.dart';
|
|
@ -7,6 +7,9 @@ repository: https://git.cubetiqs.com/CUBETIQ/cubetiq_dart_shared.git
|
|||
environment:
|
||||
sdk: '>=2.12.0 <3.0.0'
|
||||
|
||||
dependencies:
|
||||
ansicolor: ^2.0.1
|
||||
|
||||
dev_dependencies:
|
||||
pedantic: ^1.10.0
|
||||
test: ^1.16.0
|
||||
|
|
Loading…
Reference in New Issue
Block a user