mc_gallery/lib/features/core/services/logging_service.dart

72 lines
2.5 KiB
Dart

import 'dart:io';
import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart';
import 'package:talker/talker.dart';
import 'package:talker_dio_logger/talker_dio_logger_interceptor.dart';
import 'package:talker_dio_logger/talker_dio_logger_settings.dart';
import '/locator.dart';
/// Handles logging of events.
class LoggingService {
final Talker _talker = Talker(
settings: TalkerSettings(
useHistory: false,
),
logger: TalkerLogger(
formater: !Platform.isIOS ? const ColoredLoggerFormatter() : const ExtendedLoggerFormatter(),
),
loggerSettings: TalkerLoggerSettings(
enableColors: !Platform.isIOS,
),
loggerOutput: debugPrint,
);
void Function(dynamic msg, [Object? exception, StackTrace? stackTrace]) get fine => _talker.fine;
void Function(dynamic msg, [Object? exception, StackTrace? stackTrace]) get good => _talker.good;
void Function(dynamic msg, [Object? exception, StackTrace? stackTrace]) get info =>
_talker.verbose;
void Function(dynamic msg, [Object exception, StackTrace stackTrace]) get warning =>
_talker.warning;
void Function(dynamic msg, [Object? exception, StackTrace? stackTrace]) get error =>
_talker.error;
void Function(Object exception, [StackTrace stackTrace, dynamic msg]) get handle =>
_talker.handle;
void Function(Error error, [StackTrace stackTrace, dynamic msg]) get handleError =>
_talker.handleError;
void Function(Exception exception, [StackTrace? stackTrace, dynamic msg]) get handleException =>
_talker.handleException;
void successfulInit({required String location}) => _talker.good('[$location] I am initialized');
void successfulDispose({required String location}) => _talker.good('[$location] I am disposed');
/// Adds logging to dio calls
void addLoggingInterceptor({required Dio dio}) {
dio.interceptors.add(
TalkerDioLogger(
talker: Talker(
logger: TalkerLogger(
formater:
!Platform.isIOS ? const ColoredLoggerFormatter() : const ExtendedLoggerFormatter(),
),
settings: TalkerSettings(
useHistory: false,
),
loggerSettings: TalkerLoggerSettings(
enableColors: !Platform.isIOS,
),
),
settings: const TalkerDioLoggerSettings(
printRequestHeaders: true,
printResponseHeaders: true,
),
),
);
}
static LoggingService get locate => Locator.locate();
}