fatal method
Marks an error as fatal and records it to Firebase Analytics.
entry - The complete log entry containing fatal error message, level, timestamp, context, stackTrace, and event.
Implementation
@override
Future<void> fatal(LogEntry entry) async {
try {
if (shouldLog(event: entry.event)) {
// Use the unified mergedContext getter with fatal-specific parameters
final context = entry.mergedContext;
final serializedContext = context.isNotEmpty
? await _serializeContext(context)
: <String, dynamic>{};
final parameters = <String, Object>{
'param_message': entry.message.toString(),
'param_error':
entry.stackTrace?.toString() ?? 'no_exception_provided',
...serializedContext.cast<String, Object>(),
};
if (entry.event != null && entry.event is FirebaseAnalyticsLogEvent) {
final analyticsEvent = entry.event as FirebaseAnalyticsLogEvent;
parameters['param_event_type'] = analyticsEvent.eventName;
}
_analytics.logEvent(name: 'fatal_error', parameters: parameters);
}
} catch (e, stack) {
developer.log(
'Error during Firebase Analytics fatal error handling: $e',
name: 'FirebaseAnalyticsLogStrategy',
error: e,
stackTrace: stack,
);
}
}