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

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