Logging Integration

Learn more about the Sentry Logging integration for the Flutter SDK.

This integration connects Sentry with the popular Dart logging package, providing the following capabilities:

  • If enableLogs is set to true, Sentry will send your log messages as Sentry Structured Logs (new in 9.5.0)
  • Captures breadcrumbs from your log calls
  • Converts error-level logs into Sentry error events
  • Works with your existing logging code

To add the Logging integration, add the sentry_logging dependency.

pubspec.yaml
Copied
dependencies:
  sentry: ^9.6.0
  sentry_logging: ^9.6.0
  logging: ^1.0.2

Add the LoggingIntegration to your Sentry.init call:

Copied
import 'package:sentry_logging/sentry_logging.dart';
import 'package:sentry/sentry.dart';

Future<void> main() async {
  await Sentry.init(
    (options) {
      options.dsn = 'https://examplePublicKey@o0.ingest.sentry.io/0';
      options.addIntegration(LoggingIntegration());
      // If you want to enable sending structured logs, set `enableLogs` to `true`
      options.enableLogs = true;
    },
    appRunner: initApp, // Init your App.
  );
}

ParameterDefaultDescription
minBreadcrumbLevelLevel.INFOMinimum level for creating breadcrumbs
minEventLevelLevel.SEVEREMinimum level for creating error events
minSentryLogLevelLevel.INFOMinimum level for sending structured logs (requires enableLogs to be true)

You can customize which log levels trigger different Sentry features:

Copied
await Sentry.init(
  (options) {
    options.dsn = 'https://examplePublicKey@o0.ingest.sentry.io/0';
    options.addIntegration(LoggingIntegration(
      minBreadcrumbLevel: Level.INFO,    // Breadcrumbs for INFO and above
      minEventLevel: Level.SEVERE,       // Error events for SEVERE and above  
      minSentryLogLevel: Level.INFO,     // Structured logs for INFO and above
    ));
  },
  appRunner: initApp,
);

Add the following snippet to your app and execute it to verify that Sentry is capturing your logs:

Copied
import 'package:logging/logging.dart';

void testLogging() {
  final log = Logger('MyAwesomeLogger');

  // This creates a breadcrumb AND a structured log (Level.INFO >= defaults)
  log.info('User logged in successfully');
  
  // This creates a breadcrumb AND a structured log (Level.WARNING >= defaults)  
  log.warning('Rate limit approaching');

  try {
    throw StateError('Something went wrong');
  } catch (error, stackTrace) {
    // This creates a breadcrumb, structured log, AND error event (Level.SEVERE >= all defaults)
    log.severe('Critical error occurred', error, stackTrace);
  }
}

  • Breadcrumbs: All three log calls will appear as breadcrumbs on the error event
  • Error Event: The severe log creates a full error event with stack trace
  • Structured Logs: (if enableLogs is true) Navigate to Logs in your Sentry project to see all three entries as searchable structured logs
Was this helpful?
Help improve this content
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").