Skip to content

Commit

Permalink
up
Browse files Browse the repository at this point in the history
  • Loading branch information
committed Jan 12, 2025
1 parent c7a3908 commit 6684289
Showing 1 changed file with 84 additions and 171 deletions.
255 changes: 84 additions & 171 deletions lib/log/log.dart
Original file line number Diff line number Diff line change
@@ -1,195 +1,108 @@
/* <!-- START LICENSE -->
import 'dart:async';

import 'package:general_lib/dart/dart.dart';
import 'package:general_lib/dart/executable_type/executable.dart';
import 'package:general_lib/extension/extension.dart';
import 'package:stack_trace/stack_trace.dart';

This Software / Program / Source Code Created By Developer From Company GLOBAL CORPORATION
Social Media:
/// GeneralLibraryLog
enum GeneralLibraryLogMessageType {
/// GeneralLibraryLog
error,

- Youtube: https://youtube.com/@Global_Corporation
- Github: https://github.com/globalcorporation
- TELEGRAM: https://t.me/GLOBAL_CORP_ORG_BOT
/// GeneralLibraryLog
info,

All code script in here created 100% original without copy / steal from other code if we copy we add description source at from top code
/// GeneralLibraryLog
debug,

If you wan't edit you must add credit me (don't change)
/// GeneralLibraryLog
succes;
}

If this Software / Program / Source Code has you
/// GeneralLibraryLog
class GeneralLibraryLogMessage {
/// GeneralLibraryLog
final Object? value;

Jika Program ini milik anda dari hasil beli jasa developer di (Global Corporation / apapun itu dari turunan itu jika ada kesalahan / bug / ingin update segera lapor ke sub)
/// GeneralLibraryLog
final StackTrace stackTrace;

Misal anda beli Beli source code di Slebew CORPORATION anda lapor dahulu di slebew jangan lapor di GLOBAL CORPORATION!
/// GeneralLibraryLog
final GeneralLibraryLogMessageType logMessageType;

Jika ada kendala program ini (Pastikan sebelum deal project tidak ada negosiasi harga)
Karena jika ada negosiasi harga kemungkinan
/// GeneralLibraryLog
final bool isForcePrint;

1. Software Ada yang di kurangin
2. Informasi tidak lengkap
3. Bantuan Tidak Bisa remote / full time (Ada jeda)
/// GeneralLibraryLog
final bool isFullDetail;

Sebelum program ini sampai ke pembeli developer kami sudah melakukan testing
/// GeneralLibraryLog
const GeneralLibraryLogMessage({
/// GeneralLibraryLog
required this.value,

jadi sebelum nego kami sudah melakukan berbagai konsekuensi jika nego tidak sesuai ?
Bukan maksud kami menipu itu karena harga yang sudah di kalkulasi + bantuan tiba tiba di potong akhirnya bantuan / software kadang tidak lengkap
/// GeneralLibraryLog
required this.isForcePrint,

/// GeneralLibraryLog
required this.stackTrace,

<!-- END LICENSE --> */
// ignore_for_file: unnecessary_string_interpolations, unnecessary_brace_in_string_interps, non_constant_identifier_names
/// GeneralLibraryLog
required this.isFullDetail,

import 'dart:async';
import 'dart:convert';
import 'package:general_lib/dart/dart.dart';
/// GeneralLibraryLog
required this.logMessageType,
});

class Log {
Object? data;
String title;
String name;
Zone? zone;
Object? error;
StackTrace? stackTrace;
DateTime? dateTimeStart;
DateTime? dateTimeNow;
Log(
this.data, {
this.title = "LOG",
this.name = "info",
this.zone,
this.dateTimeNow,
this.dateTimeStart,
this.error,
this.stackTrace,
bool? isPrintToTerminal = true,
GeneralLibraryLogMessage copyWith({
Object? value,
bool? isForcePrint,
StackTrace? stackTrace,
bool? isFullDetail,
GeneralLibraryLogMessageType? logMessageType,
}) {
dateTimeStart ??= DateTime.now();
dateTimeNow ??= DateTime.now();
if (isPrintToTerminal is bool) {
if (isPrintToTerminal) {
printToTerminal();
}
} else {
// dart
if (Dart.isDebug) {
printToTerminal();
}
}
}

String getAllText() {
String msg = "${title}";
msg += "\n[DATE TIME START]\t${dateTimeStart.toString()}";
// }
// if (dateTimeNow != null)
msg += "\n[DATE TIME NOW]\t${dateTimeNow.toString()}";
msg += "\nMessage";
if (data is Map || data is List) {
msg += "\n${JsonEncoder.withIndent(" " * 2).convert(data)}";
} else {
msg += "\n${data.toString()}";
}
// if (stackTrace != null) {
msg += "\n${name.toUpperCase()}";

List<String> error_stacks = stackTrace.toString().trim().split("\n");
for (var i = 0; i < error_stacks.length; i++) {
String error = error_stacks[i];
msg += "\n[${name}]\t${error}";
}
// }

return msg;
return GeneralLibraryLogMessage(
value: value ?? this.value,
isForcePrint: isForcePrint ?? this.isForcePrint,
stackTrace: stackTrace ?? this.stackTrace,
isFullDetail: isFullDetail ?? this.isFullDetail,
logMessageType: logMessageType ?? this.logMessageType,
);
}
}

String getLongText() {
List<String> msgs = getAllText().split("\n");

String text = "";

for (var i = 0; i < msgs.length; i++) {
String msg = msgs[i];
if (msg.length > text.length) {
text = msg.replaceAll(RegExp(r"\t"), " ");
/// GeneralLibraryLog
class GeneralLibraryLog {
/// GeneralLibraryLog
const GeneralLibraryLog();


/// GeneralLibraryLog
static final bool _isCanPrintToTerminal = Dart.executable_type == ExecutableType.cli;

/// GeneralLibraryLog
FutureOr<void> printToTerminal({
required GeneralLibraryLogMessage logMessage,
}) async {
if (_isCanPrintToTerminal || logMessage.isForcePrint) {
try {
print(("---" * 5) + logMessage.logMessageType.name + ("---" * 5));
if (logMessage.isFullDetail) {
print(logMessage.stackTrace.toString());
} else {
print(Trace.from(logMessage.stackTrace).terse.toString());
}
if (logMessage.value is Map || logMessage.value is List) {
(logMessage.value ?? {}).printPretty();
} else {
print(logMessage.value);
}
print("${"---" * 5}Finished${"---" * 5}");
} catch (e, stack) {
print("$e $stack");
}
}

return "${" " * 2}${text}${" " * 2}";
}

String line(
{required String text, required String fill, required int longText}) {
final fillCount = longText - text.length;
List<String> left = List.generate(fillCount ~/ 2, (index) => fill);
List<String> right =
List.generate(fillCount - left.length, (index) => fill);
// final left = List.filled(fillCount ~/ 2, fill);
// final right = List.filled(fillCount - left.length, fill);
return left.join() + text + right.join();
}

String containerFull({
required String text,
required int longText,
}) {
return "${containerTop(longText: longText)}\n${containerMid(text: text, longText: longText)}\n${containerEnd(longText: longText)}";
}

String containerTop({
required int longText,
}) {
return "╔${line(text: '', fill: '═', longText: longText)}╗";
}

String containerMid({
required String text,
required int longText,
}) {
return "║${line(text: text, fill: ' ', longText: longText)}║";
}

String containerMidClose({
required int longText,
}) {
// print('╟${line('', '─')}╢');
return "╟${line(text: "", fill: '─', longText: longText)}╢";
}

String containerEnd({
required int longText,
}) {
return "╚${line(text: "", fill: '═', longText: longText)}╝";
}

void printToTerminal() {
print(toString());
}

@override
String toString() {
String longText = getLongText();

String msg = containerFull(text: title, longText: longText.length);
if (dateTimeStart != null) {
msg += "\n[DATE TIME START]\t${dateTimeStart.toString()}";
}
if (dateTimeNow != null) {
msg += "\n[DATE TIME NOW]\t${dateTimeNow.toString()}";
}

msg += "\n${containerFull(text: "Message", longText: longText.length)}";

if (data is Map || data is List) {
msg += "\n${JsonEncoder.withIndent(" " * 2).convert(data)}";
} else {
msg += "\n${data.toString()}";
}
if (stackTrace != null) {
msg +=
"\n${containerFull(text: name.toUpperCase(), longText: longText.length)}";
List<String> error_stacks = stackTrace.toString().trim().split("\n");
for (var i = 0; i < error_stacks.length; i++) {
String error = error_stacks[i];
msg += "\n[${name}]\t${error}";
}
}

msg += "\n${containerFull(text: "Complete", longText: longText.length)}";
return msg;
}
}

0 comments on commit 6684289

Please sign in to comment.