Change logger to print in console

This commit is contained in:
problematicconsumer
2024-01-13 23:10:48 +03:30
parent a99751abda
commit 70d7280081
3 changed files with 57 additions and 6 deletions

View File

@@ -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';
@@ -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(
@@ -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;

View File

@@ -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, {

View File

@@ -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';
@@ -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);