error method
Records an error or a structured event with an error to Firebase Crashlytics.
entry - The complete log entry containing error message, level, timestamp, context, stackTrace, and event.
Implementation
@override
Future<void> error(LogEntry entry) async {
try {
if (shouldLog(event: entry.event)) {
// Merge context from entry.context and event.parameters
final contextInfo = <String, dynamic>{};
if (entry.context != null) {
contextInfo.addAll(entry.context!);
}
if (entry.event?.parameters != null) {
contextInfo.addAll(entry.event!.parameters!);
}
// Set custom keys from context
if (contextInfo.isNotEmpty) {
contextInfo.forEach((key, value) {
FirebaseCrashlytics.instance.setCustomKey(key, value.toString());
});
}
if (entry.event != null && entry.event is FirebaseCrashlyticsLogEvent) {
final crashlyticsEvent = entry.event as FirebaseCrashlyticsLogEvent;
FirebaseCrashlytics.instance.recordError(
entry.message,
entry.stackTrace,
reason: crashlyticsEvent.eventMessage,
);
} else {
FirebaseCrashlytics.instance.recordError(
entry.message,
entry.stackTrace,
);
}
}
} catch (e, stack) {
developer.log(
'Error during error handling in Firebase Crashlytics Strategy',
name: 'FirebaseCrashlyticsLogStrategy',
error: e,
stackTrace: stack,
);
}
}