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)) {
      // Use the unified mergedContext getter, cast for Firebase compatibility
      final parameters = entry.mergedContext.cast<String, Object>();

      if (entry.event != null && entry.event is FirebaseAnalyticsLogEvent) {
        final analyticsEvent = entry.event as FirebaseAnalyticsLogEvent;
        _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,
    );
  }
}