Change initialization and logging
This commit is contained in:
@@ -1,45 +0,0 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:loggy/loggy.dart';
|
||||
|
||||
class MultiLogPrinter extends LoggyPrinter {
|
||||
MultiLogPrinter(
|
||||
this.consolePrinter,
|
||||
this.otherPrinters,
|
||||
);
|
||||
|
||||
final LoggyPrinter consolePrinter;
|
||||
List<LoggyPrinter> otherPrinters;
|
||||
|
||||
void addPrinter(LoggyPrinter printer) {
|
||||
otherPrinters.add(printer);
|
||||
}
|
||||
|
||||
@override
|
||||
void onLog(LogRecord record) {
|
||||
consolePrinter.onLog(record);
|
||||
for (final printer in otherPrinters) {
|
||||
printer.onLog(record);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class FileLogPrinter extends LoggyPrinter {
|
||||
FileLogPrinter(
|
||||
String filePath, {
|
||||
this.minLevel = LogLevel.debug,
|
||||
}) : _logFile = File(filePath);
|
||||
|
||||
final File _logFile;
|
||||
final LogLevel minLevel;
|
||||
|
||||
late final _sink = _logFile.openWrite(
|
||||
mode: FileMode.writeOnly,
|
||||
);
|
||||
|
||||
@override
|
||||
void onLog(LogRecord record) {
|
||||
final time = record.time.toIso8601String().split('T')[1];
|
||||
_sink.writeln("$time - $record");
|
||||
}
|
||||
}
|
||||
@@ -1,98 +0,0 @@
|
||||
import 'package:hiddify/utils/sentry_utils.dart';
|
||||
import 'package:loggy/loggy.dart';
|
||||
import 'package:sentry_flutter/sentry_flutter.dart';
|
||||
|
||||
// modified version of https://github.com/getsentry/sentry-dart/tree/main/logging
|
||||
class SentryLoggyIntegration extends LoggyPrinter
|
||||
implements Integration<SentryOptions> {
|
||||
SentryLoggyIntegration({
|
||||
LogLevel minBreadcrumbLevel = LogLevel.info,
|
||||
LogLevel minEventLevel = LogLevel.error,
|
||||
}) : _minBreadcrumbLevel = minBreadcrumbLevel,
|
||||
_minEventLevel = minEventLevel;
|
||||
|
||||
final LogLevel _minBreadcrumbLevel;
|
||||
final LogLevel _minEventLevel;
|
||||
|
||||
late Hub _hub;
|
||||
|
||||
@override
|
||||
void call(Hub hub, SentryOptions options) {
|
||||
_hub = hub;
|
||||
options.sdk.addIntegration('LoggyIntegration');
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> close() async {}
|
||||
|
||||
bool _shouldLog(LogLevel logLevel, LogLevel minLevel) {
|
||||
if (logLevel == LogLevel.off) {
|
||||
return false;
|
||||
}
|
||||
return logLevel.priority >= minLevel.priority;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> onLog(LogRecord record) async {
|
||||
if (!canLogEvent(record.error)) return;
|
||||
|
||||
if (_shouldLog(record.level, _minEventLevel)) {
|
||||
await _hub.captureEvent(
|
||||
record.toEvent(),
|
||||
stackTrace: record.stackTrace,
|
||||
hint: Hint.withMap({TypeCheckHint.record: record}),
|
||||
);
|
||||
}
|
||||
|
||||
if (_shouldLog(record.level, _minBreadcrumbLevel)) {
|
||||
await _hub.addBreadcrumb(
|
||||
record.toBreadcrumb(),
|
||||
hint: Hint.withMap({TypeCheckHint.record: record}),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extension LogRecordX on LogRecord {
|
||||
Breadcrumb toBreadcrumb() {
|
||||
return Breadcrumb(
|
||||
category: 'log',
|
||||
type: 'debug',
|
||||
timestamp: time.toUtc(),
|
||||
level: level.toSentryLevel(),
|
||||
message: message,
|
||||
data: <String, Object>{
|
||||
if (object != null) 'LogRecord.object': object!,
|
||||
if (error != null) 'LogRecord.error': error!,
|
||||
if (stackTrace != null) 'LogRecord.stackTrace': stackTrace!,
|
||||
'LogRecord.loggerName': loggerName,
|
||||
'LogRecord.sequenceNumber': sequenceNumber,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
SentryEvent toEvent() {
|
||||
return SentryEvent(
|
||||
timestamp: time.toUtc(),
|
||||
logger: loggerName,
|
||||
level: level.toSentryLevel(),
|
||||
message: SentryMessage(message),
|
||||
throwable: error,
|
||||
// ignore: deprecated_member_use
|
||||
extra: <String, Object>{
|
||||
if (object != null) 'LogRecord.object': object!,
|
||||
'LogRecord.sequenceNumber': sequenceNumber,
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
extension LogLevelX on LogLevel {
|
||||
SentryLevel? toSentryLevel() => switch (this) {
|
||||
LogLevel.all || LogLevel.debug => SentryLevel.debug,
|
||||
LogLevel.info => SentryLevel.info,
|
||||
LogLevel.warning => SentryLevel.warning,
|
||||
LogLevel.error => SentryLevel.error,
|
||||
_ => null,
|
||||
};
|
||||
}
|
||||
@@ -2,7 +2,6 @@ export 'alerts.dart';
|
||||
export 'async_mutation.dart';
|
||||
export 'bottom_sheet_page.dart';
|
||||
export 'callback_debouncer.dart';
|
||||
export 'custom_log_printer.dart';
|
||||
export 'custom_loggers.dart';
|
||||
export 'custom_text_form_field.dart';
|
||||
export 'date_time_formatter.dart';
|
||||
@@ -11,7 +10,6 @@ export 'mutation_state.dart';
|
||||
export 'number_formatters.dart';
|
||||
export 'placeholders.dart';
|
||||
export 'platform_utils.dart';
|
||||
export 'sentry_loggy_integration.dart';
|
||||
export 'sentry_riverpod_observer.dart';
|
||||
export 'sentry_utils.dart';
|
||||
export 'text_utils.dart';
|
||||
|
||||
Reference in New Issue
Block a user