log method
Implementation
Future<void> log(LogType type, Map<String, dynamic> config) async {
if (type == LogType.appAnalytics) {
type = LogType.appAnalytics;
}
final levelProviders = _providers[type]?[config['logLevel']];
if (levelProviders == null) return;
List<Future<void>> tasks = [];
for (final provider in levelProviders) {
final task = provider.log(config);
if (provider.shouldAwait) {
tasks.add(task);
} else {
// Fire-and-forget
task.catchError((error) {
// Optionally handle or log errors
print('Error logging event: $error');
});
// No need to add to tasks as it's fire-and-forget
}
}
// If any tasks are meant to be awaited, wait for them here
if (tasks.isNotEmpty) {
await Future.wait(tasks);
}
}