log method

  1. @override
Future<void> log(
  1. LogEntry entry
)
override

Logs a message or a structured event to Firebase Analytics.

entry - The complete log entry containing message, level, timestamp, context, and event.

Implementation

@override
Future<void> log(LogEntry entry) async {
  try {
    if (shouldLog(event: entry.event)) {
      // Merge context from entry.context and event.parameters
      final parameters = <String, Object>{};
      if (entry.context != null) {
        parameters.addAll(entry.context!.cast<String, Object>());
      }
      if (entry.event != null) {
        if (entry.event is FirebaseAnalyticsLogEvent) {
          final analyticsEvent = entry.event as FirebaseAnalyticsLogEvent;
          if (analyticsEvent.parameters != null) {
            parameters.addAll(analyticsEvent.parameters!);
          }
          _analytics.logEvent(
            name: analyticsEvent.eventName,
            parameters: parameters.isNotEmpty ? parameters : null,
          );
        }
      }
    }
  } catch (e, stack) {
    developer.log(
      'Error during Firebase Analytics logging: $e',
      name: 'FirebaseAnalyticsLogStrategy',
      error: e,
      stackTrace: stack,
    );
  }
}