見出し画像

Flutter WebでSentry Dart Pluginを使って詳細なエラーログを取得できるようにしたい

Flutter WebでSentry Dart Pluginを使って詳細なエラーログを取得できるようにしました!
※こちらの記事は2021年12月時点での情報がベースになります。

はじめに

こんにちは!フロントエンドエンジニアの松原(https://twitter.com/couragenki)です。
開発経験はReact、Vueで3年ほどです。
現在は、グロービスで初のFlutterの実務での開発に挑戦しています。
今回の記事では、Flutterの実務で得た知見について共有します。

当初の課題

Flutter Webを開発しているとローカル環境ではエラーの発生箇所が分かるが、デプロイした際にコードがbundleされてエラー箇所が分からなくなるという課題がありました。

そのためFlutter Webのデプロイされたアプリケーションでもエラー箇所を特定してエラー検知精度を高めたいと考えました。

今回はすでにSentry Flutterでsentryの導入ができている状態でsource mapをアップロードしてエラーログを詳細に取得するやり方になります。

https://twitter.com/couragenki

使ったパッケージ

こちらの情報を参照しました。

sentry-dart-plugin

サンプルコードと導入順序

サンプルコード

buildspec.yaml に以下を追加

  • ビルドコマンドに--source-mapsを追加

  • sentry_dart_pluginを追加する

fvm flutter pub get(そのまま)
fvm flutter build web --source-maps
fvm flutter packages pub run sentry_dart_plugin

pubspec.yaml にsentryの設定を追記する
必須の値はproject、org、auth_tokenの3つになります。
今回はsource mapをsentryにアップロードしてエラーログを取得したいのでupload_source_mapsのパラメータをtrueにします。

sentry:
  upload_source_maps: true
  project: プロジェクト名
  org: 組織名
  auth_token: 

参照:https://github.com/getsentry/sentry-dart-plugin#configuration-optional

実際に導入する際にうまくいかなかったこと

ここは最初気づかずに、うまく動かなかったところなのですがsource mapをアップロードする際にリリースのバージョンを指定する必要があります。

当時のプロジェクトではバージョンのパラメータがなかったのが原因でした。リリースバージョンを指定しないとどのバージョンでのエラーなのかが紐づかないので詳細なエラーが取得できないです。

..release = 'my-project-name@2.3.12'

実際のエラーログ

導入前

エラー通知は飛んでいるがエラー箇所がわからない

sentry dart plugin導入前

導入後

https://sentry.io/settings/組織名/projects/プロダクト名/source-maps/ にソースマップがアップロードされます。

実際にsentryに届いたエラー通知を見ると導入前に比べエラー箇所が特定できるようになりました。

sentry dart plugin導入後

まとめ

Flutterを実務で利用するのは初めてでしたが導入のやり方はReactやVueなどと同じようなやり方だったのですんなりいきました。

エラー箇所が分かることで開発が捗りデバッグも楽になるので早めに導入できてよかったです。

Flutter Webを実際のプロジェクトで使用するケースは珍しいので同じようなプロジェクトで開発をされている方と情報交換したいな〜と思いました。

以上になります。
最後までお読みいただきありがとうござました。

この記事が気に入ったらサポートをしてみませんか?