log method
Logs a message or a structured event to Sentry.
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 context = <String, dynamic>{};
if (entry.context != null) {
context.addAll(entry.context!);
}
if (entry.event?.parameters != null) {
context.addAll(entry.event!.parameters!);
}
// Add context to Sentry using structured contexts
if (context.isNotEmpty) {
Sentry.configureScope((scope) {
scope.setContexts('log_context', context);
});
}
if (entry.event != null && entry.event is SentryLogEvent) {
final sentryEvent = entry.event as SentryLogEvent;
Sentry.captureMessage(
'${sentryEvent.eventName}: ${sentryEvent.eventMessage}',
);
} else {
Sentry.captureMessage('Message: ${entry.message}');
}
}
} catch (e, stack) {
developer.log(
'Error during logging in Sentry Strategy',
name: 'SentryLogStrategy',
error: e,
stackTrace: stack,
);
}
}