log method
Logs a message or a structured event to Firebase Crashlytics.
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 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.log(
'${crashlyticsEvent.eventName}: ${crashlyticsEvent.eventMessage ?? entry.message}',
);
} else {
FirebaseCrashlytics.instance.log('Message: ${entry.message}');
}
}
} catch (e, stack) {
developer.log(
'Error during logging in Firebase Crashlytics Strategy',
name: 'FirebaseCrashlyticsLogStrategy',
error: e,
stackTrace: stack,
);
}
}