【Flutter】sentry_flutterでエラーを取得

Flutter

sentry_flutterとは

sentry_flutterは、Flutterアプリケーションで発生するエラーをキャプチャし、Sentry.ioに送信するためのSDKです。

sentry_flutter | Flutter package
Sentry SDK for Flutter. This package aims to support different Flutter targets by relying on the many platforms supporte...

使い方

インストール

まず、Sentry.ioでアカウントを作成し、DSNを取得します。

dependencies:
  sentry_flutter: ^8.2.0

Sentry SDKの初期化

取得したDSNを使用して、Sentry SDKを初期化します。

import 'package:flutter/widgets.dart';
import 'package:sentry_flutter/sentry_flutter.dart';

Future<void> main() async {
  await SentryFlutter.init(
    (options) {
      options.dsn = 'https://example@sentry.io/add-your-dsn-here';
    },
    // アプリの初期化
    appRunner: () => runApp(MyApp()),
  );
}

Flutter 3.3以前のバージョンで独自のエラーハンドラを使用する場合:

import 'dart:async';

import 'package:flutter/widgets.dart';
import 'package:sentry_flutter/sentry_flutter.dart';

Future<void> main() async {
  runZonedGuarded(() async {
    await SentryFlutter.init(
      (options) {
        options.dsn = 'https://example@sentry.io/add-your-dsn-here';
      },
    );

    runApp(MyApp());
  }, (exception, stackTrace) async {
    await Sentry.captureException(exception, stackTrace: stackTrace);
  });
}

ナビゲーションイベントのトラッキング

ナビゲーションイベントをトラッキングするために、SentryNavigatorObserverMaterialAppWidgetsAppCupertinoAppに追加します。

import 'package:flutter/material.dart';
import 'package:sentry_flutter/sentry_flutter.dart';

// ...
MaterialApp(
  navigatorObservers: [
    SentryNavigatorObserver(),
  ],
  // 他のパラメータ
)
// ...

AssetBundlesのパフォーマンストレース

AssetBundlesのトレースをサポートするためのコードは以下の通りです。

runApp(
  DefaultAssetBundle(
    bundle: SentryAssetBundle(),
    child: MyApp(),
  ),
);

これにより、DefaultAssetBundle.of(context)を使用してアクセスされる全てのAssetBundleの使用がトレースされます。例えば、Image.assetのようなFlutterの内部アクセスも含まれます。

HTTPイベントのトラッキング

詳細な指示はこちらを参照してください。

デバッグシンボルとソースマップのアップロード (Android, iOS/macOS, Web)

デバッグシンボルとソースマップは、SentryのIssue Detailsページに表示される情報を提供し、問題のトリアージを助けます。これらをSentryに提供する方法についての詳細はドキュメントを参照してください。

エラーをキャッチするためのヒント

  • try/catchブロックを使用します。
  • FuturesのためのcatchErrorブロックを使用します。例はdart.devを参照してください。
  • Flutter固有のエラーは自動的にキャプチャされます。
  • 現在のアイソレートのエラーは自動的にキャプチャされます(Webアプリを除く)。
  • 独自のアイソレートのために、isolate.addSentryErrorListener()を呼び出してエラーリスナーを追加します。

Buy me a coffee!

Flutterアプリ開発
シェアする
sogaをフォローする
タイトルとURLをコピーしました