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, serialize and cast for Firebase compatibility
      final context = entry.mergedContext;
      final parameters = context.isNotEmpty
          ? (await _serializeContext(context)).cast<String, Object>()
          : <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,
    );
  }
}