$ flutter pub add sentry_flutter
http://sentry.io 회원가입을 진행하고, DSN을 복사합니다.
DSN: sentry → Settings → Client Key (DNS)
// main.dart
import 'package:sentry_flutter/sentry_flutter.dart';
// DSN
final String sentryDsn = 'https://example@sentry.io/add-your-dsn-here';
Future<void> main() async {
runZonedGuarded(() async {
/// Debug Mode가 아닐때 Sentry init (댓글 의견 반영)
if (!kDebugMode) {
await SentryFlutter.init(
(options) {
options.dsn = sentryDsn;
options.attachStacktrace = true;
},
appRunner: () => runApp(MyApp()),
);
} else {
runApp(MyApp());
}
}, (exception, stackTrace) async {
Sentry.captureException(exception, stackTrace: stackTrace);
});
}
kDebugMode
: flutter에서 기본 제공하며, Debug Mode일 때 True를 반환합니다. /// Sentry Bug Report 확인 용도
final userInfo = {
'name': 'taehyun',
'age': '31',
'deviceOS': 'AOS',
};
Sentry.configureScope((scope) => scope.setContexts('USER_INFO', userInfo));
try {
res = await http.get('...');
} catch (exception, stacktrace) {
// API Error Sentry 보고 예시
Sentry.captureException('exception: $exception, stacktrace: $stacktrace, statusCode: ${res?.statusCode ?? -1}, url: $url, method: 'get'));
}
API 관련 에러를 쉽게 처리해주는게
Sentry SDK for Dart(sentry)
에는 있는것 같은데..
적용을 해봤지만 원활하게 동작하지 않았고,flutter_sentry
에 비해 모바일 상세(device) 정보가 출력되지 않습니다.
더 좋은 방법이 있으면, 댓글 남겨주시면 감사하겠습니다 🙏
https://pub.dev/packages/sentry
slack 연동을 위한 앱이 있는데, 이는 비용이 발생하므로 저는 무료로 연동하는 방법을 설명하겠습니다.
실제 운영 환경에서 모니터링하고 있는데, 정보가 부족한 경우가 조금 있었습니다.
각각의 페이지에서 에러가 발생했다고 가정하고, 에러 분석에 필요한 정보를 추가하면 좋을 것 같습니다.
아직 블로그 정리하는게 미숙한데, 도움이 되었으면 좋겠고, 앞으로 다양한 정보 공유 드리겠습니다! 👋
https://flutter-ko.dev/docs/cookbook/maintenance/error-reporting
https://docs.sentry.io/platforms/flutter/
https://pub.dev/packages/sentry_flutter
options.dsn = kDebugMode ? '' : sentryDsn;
로 작성했을때 개발시에도 에러가 콘솔에 안뜨는것 같은데 맞을까요???