Skip to content

Commit

Permalink
#353: added central logger
Browse files Browse the repository at this point in the history
  • Loading branch information
jorre127 committed Oct 14, 2024
1 parent 80894c6 commit 58f2392
Show file tree
Hide file tree
Showing 30 changed files with 347 additions and 278 deletions.
4 changes: 2 additions & 2 deletions lib/di/db/setup_drift_io.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import 'package:drift/drift.dart';
import 'package:drift/isolate.dart';
import 'package:drift/native.dart';
import 'package:flutter_template/util/env/flavor_config.dart';
import 'package:icapps_architecture/icapps_architecture.dart';
import 'package:flutter_template/util/logging/flutter_template_logger.dart';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';

Expand All @@ -17,7 +17,7 @@ Future<DatabaseConnection> createDriftDatabaseConnection(String name) async {
final file = File(join(dbFolder.path, '$name.sqlite'));
if ((FlavorConfig.isDev() || FlavorConfig.isDummy()) && file.existsSync()) {
file.deleteSync();
staticLogger.debug('Databasefile `db.sqlite` is deleted');
FlutterTemplateLogger.logDebug('Databasefile `db.sqlite` is deleted');
}
final receivePort = ReceivePort();

Expand Down
4 changes: 2 additions & 2 deletions lib/di/db/setup_drift_web.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'package:drift/drift.dart';
import 'package:drift/wasm.dart';
import 'package:icapps_architecture/icapps_architecture.dart';
import 'package:flutter_template/util/logging/flutter_template_logger.dart';

// If you want to use web workers, see https://drift.simonbinder.eu/web/
Future<DatabaseConnection> createDriftDatabaseConnection(String name) async {
Expand All @@ -11,7 +11,7 @@ Future<DatabaseConnection> createDriftDatabaseConnection(String name) async {
);

if (executor.missingFeatures.isNotEmpty) {
staticLogger.d('Using ${executor.chosenImplementation} due to missing browser features: ${executor.missingFeatures}');
FlutterTemplateLogger.logDebug('Using ${executor.chosenImplementation} due to missing browser features: ${executor.missingFeatures}');
}

return DatabaseConnection(executor.resolvedExecutor);
Expand Down
275 changes: 139 additions & 136 deletions lib/di/injectable.config.dart

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions lib/di/injectable.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import 'dart:convert';
import 'package:dio/dio.dart';
import 'package:drift/drift.dart';
import 'package:firebase_analytics/firebase_analytics.dart';
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
import 'package:firebase_remote_config/firebase_remote_config.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
Expand Down Expand Up @@ -62,6 +63,9 @@ abstract class RegisterModule {
@lazySingleton
FirebaseAnalytics provideFirebaseAnalytics() => FirebaseAnalytics.instance;

@lazySingleton
FirebaseCrashlytics provideFirebaseCrashlytics() => FirebaseCrashlytics.instance;

@lazySingleton
FlutterSecureStorage storage() => const FlutterSecureStorage();

Expand Down
4 changes: 2 additions & 2 deletions lib/main_common.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import 'package:firebase_crashlytics/firebase_crashlytics.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_template/architecture.dart';
import 'package:flutter_template/util/logging/flutter_template_logger.dart';
import 'package:flutter_template/util/web/app_configurator.dart' if (dart.library.html) 'package:flutter_template/util/web/app_configurator_web.dart';
import 'package:icapps_architecture/icapps_architecture.dart';

Future<void> _setupCrashLogging() async {
await Firebase.initializeApp();
Expand All @@ -27,7 +27,7 @@ FutureOr<R>? wrapMain<R>(FutureOr<R> Function() appCode) async {
} catch (_) {}

try {
staticLogger.e('Uncaught platform error', error: error, stackTrace: trace);
FlutterTemplateLogger.logError('Uncaught platform error', error: error, stackTrace: trace);
} catch (_) {
// ignore: avoid_print
print(error);
Expand Down
32 changes: 16 additions & 16 deletions lib/navigator/main_navigator.navigator.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions lib/repository/login/login_repository.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:flutter_template/repository/secure_storage/auth/auth_storage.dart';
import 'package:icapps_architecture/icapps_architecture.dart';
import 'package:flutter_template/util/logging/flutter_template_logger.dart';
import 'package:injectable/injectable.dart';

@lazySingleton
Expand All @@ -22,11 +22,11 @@ class _LoginRepository implements LoginRepository {
Future<bool> get isLoggedIn => _storage.hasLoggedInUser();

@override
Future<bool> get isNotLoggedIn async=> !(await _storage.hasLoggedInUser());
Future<bool> get isNotLoggedIn async => !(await _storage.hasLoggedInUser());

@override
Future<void> login({required String email, required String password}) async {
await _storage.saveUserCredentials(accessToken: 'test_access_token', refreshToken: 'test_refresh_token');
logger.debug('Login should be implemented');
FlutterTemplateLogger.logDebug('Login should be implemented');
}
}
4 changes: 2 additions & 2 deletions lib/repository/refresh/refresh_repository.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter_template/model/exceptions/un_authorized_error.dart';
import 'package:flutter_template/repository/secure_storage/auth/auth_storage.dart';
import 'package:icapps_architecture/icapps_architecture.dart';
import 'package:flutter_template/util/logging/flutter_template_logger.dart';
import 'package:injectable/injectable.dart';
import 'package:synchronized/synchronized.dart' as synchronized;

Expand Down Expand Up @@ -39,7 +39,7 @@ class _RefreshRepository implements RefreshRepository {
await _lock.synchronized(() async {
final newAccessToken = await _authStorage.getAccessToken();
if (accessToken != newAccessToken) {
logger.debug('ACCESS TOKEN was already renewed');
FlutterTemplateLogger.logDebug('ACCESS TOKEN was already renewed');
return;
}
if (_failure) {
Expand Down
2 changes: 2 additions & 0 deletions lib/repository/remote_config/remote_config.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,7 @@ class RemoteConfig {

int get reviewBuild => _remoteConfig?.getOptionalInt('review_build') ?? 1;

bool get sendBlockedErrorsToFirebase => _remoteConfig?.getOptionalBool('send_blocked_errors_to_firebase') ?? false;

Map<String, LocalizedMessage> get overriddenTranslations => _remoteConfig?.getCustomObjectMap('overridden_translations', LocalizedMessage.fromJson) ?? {};
}
4 changes: 2 additions & 2 deletions lib/repository/remote_config/remote_config_repository.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import 'package:flutter_template/di/injectable.dart';
import 'package:flutter_template/repository/remote_config/base_remote_config_repository.dart';
import 'package:flutter_template/styles/theme_durations.dart';
import 'package:flutter_template/util/locale/localization_overrides.dart';
import 'package:icapps_architecture/icapps_architecture.dart';
import 'package:flutter_template/util/logging/flutter_template_logger.dart';
import 'package:injectable/injectable.dart';

@lazySingleton
Expand All @@ -24,7 +24,7 @@ class RemoteConfigRepository extends BaseRemoteConfigRepo {
await _remoteConfig.fetchAndActivate();
await getIt.get<LocalizationOverrides>().refreshOverrideLocalizations();
} catch (error, trace) {
logger.error('Unable to fetch remote config. Cached or default values will be used', error: error, stackTrace: trace);
FlutterTemplateLogger.logError('Unable to fetch remote config. Cached or default values will be used', error: error, stackTrace: trace);
}
}

Expand Down
8 changes: 4 additions & 4 deletions lib/util/api/dummy_api_util.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import 'dart:convert';

import 'package:flutter/services.dart';
import 'package:flutter_template/util/env/flavor_config.dart';
import 'package:icapps_architecture/icapps_architecture.dart';
import 'package:flutter_template/util/logging/flutter_template_logger.dart';

class DummyApiUtil {
static const _apiAssetPath = 'assets/api';
Expand All @@ -13,13 +13,13 @@ class DummyApiUtil {
}
final path = '$_apiAssetPath/$url.json';
try {
staticLogger.debug('---------------> GET - url: file://$path');
FlutterTemplateLogger.logDebug('---------------> GET - url: file://$path');

final jsonString = await rootBundle.loadString(path);
staticLogger.debug('<--------------- GET - url: file://$path - statucode: 200');
FlutterTemplateLogger.logDebug('<--------------- GET - url: file://$path - statucode: 200');
return json.decode(jsonString) as T;
} catch (e, stack) {
staticLogger.error(
FlutterTemplateLogger.logError(
'<--------------- GET - url: $path - statucode: 404',
error: e,
stackTrace: stack,
Expand Down
4 changes: 2 additions & 2 deletions lib/util/inspector/local_storage_inspector.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import 'package:file_local_storage_inspector/file_local_storage_inspector.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:flutter_template/di/injectable.dart';
import 'package:icapps_architecture/icapps_architecture.dart';
import 'package:flutter_template/util/logging/flutter_template_logger.dart';
import 'package:path_provider/path_provider.dart';
import 'package:preferences_local_storage_inspector/preferences_local_storage_inspector.dart';
import 'package:secure_storage_local_storage_inspector/secure_storage_local_storage_inspector.dart';
Expand Down Expand Up @@ -36,7 +36,7 @@ Future<void> _initLocalStorageInspector(
await configureServers(driver);

const paused = bool.fromEnvironment('storage_inspector_wait');
staticLogger.d('Starting local storage inspector. Waiting for unpause? $paused');
FlutterTemplateLogger.logDebug('Starting local storage inspector. Waiting for unpause? $paused');

await driver.start(paused: paused);
}
Expand Down
6 changes: 3 additions & 3 deletions lib/util/inspector/niddler.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import 'package:icapps_architecture/icapps_architecture.dart';
import 'package:flutter_template/util/logging/flutter_template_logger.dart';
import 'package:niddler_dart/niddler_dart.dart';

Future<Niddler> initNiddler() async {
Expand All @@ -11,12 +11,12 @@ Future<Niddler> initNiddler() async {
final niddler = niddlerBuilder.build();

const debugger = bool.fromEnvironment('niddler_wait');
staticLogger.d('Starting niddler. Waiting for debugger? $debugger');
FlutterTemplateLogger.logDebug('Starting niddler. Waiting for debugger? $debugger');

await niddler.start(waitForDebugger: debugger);

niddler.install();
staticLogger.d('Niddler is running');
FlutterTemplateLogger.logDebug('Niddler is running');

return niddler;
}
3 changes: 2 additions & 1 deletion lib/util/interceptor/network_error_interceptor.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'package:flutter_template/model/exceptions/general_network_error.dart';
import 'package:flutter_template/model/exceptions/internal_server_error.dart';
import 'package:flutter_template/model/exceptions/no_internet_error.dart';
import 'package:flutter_template/model/exceptions/un_authorized_error.dart';
import 'package:flutter_template/util/logging/flutter_template_logger.dart';
import 'package:icapps_architecture/icapps_architecture.dart';
import 'package:injectable/injectable.dart';

Expand Down Expand Up @@ -42,7 +43,7 @@ class NetworkErrorInterceptor extends SimpleInterceptor {
return GeneralNetworkError(error);
}
} catch (e, stack) {
logger.error('Failed to get correct error', error: e, stackTrace: stack);
FlutterTemplateLogger.logError('Failed to get correct error', error: e, stackTrace: stack);
return CodeError();
}
}
Expand Down
11 changes: 6 additions & 5 deletions lib/util/interceptor/network_log_interceptor.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,34 +2,35 @@ import 'dart:io';

import 'package:dio/dio.dart';
import 'package:flutter_template/model/exceptions/general_network_error.dart';
import 'package:flutter_template/util/logging/flutter_template_logger.dart';
import 'package:icapps_architecture/icapps_architecture.dart';
import 'package:injectable/injectable.dart';

@singleton
class NetworkLogInterceptor extends SimpleInterceptor {
@override
Future<Object?> onRequest(RequestOptions options) async {
logger.logNetworkRequest(options);
FlutterTemplateLogger.logNetworkRequest(options);
return super.onRequest(options);
}

@override
Future<Object?> onResponse(Response response) async {
logger.logNetworkResponse(response);
FlutterTemplateLogger.logNetworkResponse(response);
return super.onResponse(response);
}

@override
Future<Object?> onError(DioException error) async {
final response = error.response;
if (response != null && response.statusCode == HttpStatus.notModified) {
logger.logNetworkResponse(response);
FlutterTemplateLogger.logNetworkResponse(response);
return super.onError(error);
}
if (error is NetworkError) {
logger.logNetworkError(error);
FlutterTemplateLogger.logNetworkError(error);
} else {
logger.logNetworkError(GeneralNetworkError(error));
FlutterTemplateLogger.logNetworkError(GeneralNetworkError(error));
}
return super.onError(error);
}
Expand Down
5 changes: 3 additions & 2 deletions lib/util/interceptor/network_refresh_interceptor.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import 'package:flutter_template/di/injectable.dart';
import 'package:flutter_template/model/exceptions/un_authorized_error.dart';
import 'package:flutter_template/repository/refresh/refresh_repository.dart';
import 'package:flutter_template/repository/secure_storage/auth/auth_storage.dart';
import 'package:flutter_template/util/logging/flutter_template_logger.dart';
import 'package:icapps_architecture/icapps_architecture.dart';
import 'package:injectable/injectable.dart';

Expand Down Expand Up @@ -32,15 +33,15 @@ class NetworkRefreshInterceptor extends SimpleInterceptor {
Future<Object?> onError(DioException error) async {
final request = error.requestOptions;
if (_excludedPaths.contains(request.path)) {
logger.debug('Network refresh interceptor should not intercept');
FlutterTemplateLogger.logDebug('Network refresh interceptor should not intercept');
return super.onError(error);
}

if (error is! UnAuthorizedError) {
return super.onError(error);
}

logger.debug('Refreshing');
FlutterTemplateLogger.logDebug('Refreshing');
await _refreshRepo.refresh(error);

final authorizationHeader = '${AppConstants.protectedAuthenticationHeaderPrefix} ${await _authStorage.getAccessToken()}';
Expand Down
Loading

0 comments on commit 58f2392

Please sign in to comment.