Skip to content

Commit

Permalink
Change logger to print in console
Browse files Browse the repository at this point in the history
  • Loading branch information
0xConsumer committed Jan 13, 2024
1 parent a99751a commit 70d7280
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 6 deletions.
5 changes: 1 addition & 4 deletions lib/bootstrap.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_displaymode/flutter_displaymode.dart';
import 'package:flutter_loggy/flutter_loggy.dart';
import 'package:flutter_native_splash/flutter_native_splash.dart';
import 'package:hiddify/core/analytics/analytics_controller.dart';
import 'package:hiddify/core/app_info/app_info_provider.dart';
Expand All @@ -27,7 +26,6 @@ import 'package:hiddify/features/window/notifier/window_notifier.dart';
import 'package:hiddify/singbox/service/singbox_service_provider.dart';
import 'package:hiddify/utils/utils.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:loggy/loggy.dart';
import 'package:sentry_flutter/sentry_flutter.dart';

Future<void> lazyBootstrap(
Expand All @@ -36,8 +34,7 @@ Future<void> lazyBootstrap(
) async {
FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding);

Loggy.initLoggy(logPrinter: const PrettyDeveloperPrinter());

LoggerController.preInit();
FlutterError.onError = Logger.logFlutterError;
WidgetsBinding.instance.platformDispatcher.onError =
Logger.logPlatformDispatcherError;
Expand Down
51 changes: 51 additions & 0 deletions lib/core/logger/custom_logger.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,58 @@
// ignore_for_file: avoid_print

import 'dart:io';

import 'package:loggy/loggy.dart';

class ConsolePrinter extends LoggyPrinter {
const ConsolePrinter({
this.showColors = false,
});

final bool showColors;

static final _levelColors = {
LogLevel.debug:
AnsiColor(foregroundColor: AnsiColor.grey(0.5), italic: true),
LogLevel.info: AnsiColor(foregroundColor: 35),
LogLevel.warning: AnsiColor(foregroundColor: 214),
LogLevel.error: AnsiColor(foregroundColor: 196),
};

@override
void onLog(LogRecord record) {
final colorize = showColors && stdout.supportsAnsiEscapes;
final time = record.time.toIso8601String().split('T')[1];
final callerFrame = record.callerFrame == null
? ' '
: ' (${record.callerFrame?.location}) ';

final String logLevel;
if (colorize) {
logLevel = record.level.name.toUpperCase().padRight(8);
} else {
logLevel = "[${record.level.name.toUpperCase()}]".padRight(10);
}

final color =
showColors ? levelColor(record.level) ?? AnsiColor() : AnsiColor();

print(
color(
'$time $logLevel [${record.loggerName}]$callerFrame${record.message}',
),
);

if (record.stackTrace != null) {
print(record.stackTrace);
}
}

AnsiColor? levelColor(LogLevel level) {
return _levelColors[level];
}
}

class FileLogPrinter extends LoggyPrinter {
FileLogPrinter(
String filePath, {
Expand Down
7 changes: 5 additions & 2 deletions lib/core/logger/logger_controller.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import 'dart:io';

import 'package:flutter_loggy/flutter_loggy.dart';
import 'package:hiddify/core/logger/custom_logger.dart';
import 'package:hiddify/utils/custom_loggers.dart';
import 'package:loggy/loggy.dart';
Expand All @@ -18,9 +17,13 @@ class LoggerController extends LoggyPrinter with InfraLogger {

static late LoggerController _instance;

static void preInit() {
Loggy.initLoggy(logPrinter: const ConsolePrinter());
}

static void init(String appLogPath) {
_instance = LoggerController(
const PrettyDeveloperPrinter(),
const ConsolePrinter(),
{"app": FileLogPrinter(appLogPath)},
);
Loggy.initLoggy(logPrinter: _instance);
Expand Down

0 comments on commit 70d7280

Please sign in to comment.