Logging Integration
Learn more about the Sentry Logging integration for the Dart SDK.
This integration connects Sentry with the popular Dart logging package, providing the following capabilities:
- If
enableLogs
is set totrue
, Sentry will send your log messages as Sentry Structured Logs (new in9.5.0
) - Captures breadcrumbs from your log calls
- Converts error-level logs into Sentry error events
- Works with your existing logging code
This page covers the instrumentation of the Dart Logging package. This integration also supports creating structured logs. However, if you're looking to set up Sentry structured logs in general, visit our Structured Logs documentation.
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.
);
}
Parameter | Default | Description |
---|---|---|
minBreadcrumbLevel | Level.INFO | Minimum level for creating breadcrumbs |
minEventLevel | Level.SEVERE | Minimum level for creating error events |
minSentryLogLevel | Level.INFO | Minimum 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
istrue
) 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").
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").