Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- java
- abap
- Flutter
- JQ
- 자바 출력 방식
- develop
- npm
- firebase
- java 콘솔 출력 차이
- java 출력
- 배포
- 앱심사
- printf
- println
- nodejs
- unity
- 단축키
- ListView
- Clean Architecture
- 자바스크립트
- 엡
- scss
- JS
- DART
- react
- riverpod
- 자바 포맷 출력
- lifecycle
- UI/UX
- LLM
Archives
- Today
- Total
guricode
[flutter-sns-project - 8] Flutter 앱에 Sentry 연동하기: 설치부터 초기화까지 본문
앱/Flutter&Dart
[flutter-sns-project - 8] Flutter 앱에 Sentry 연동하기: 설치부터 초기화까지
agentrakugaki 2025. 9. 4. 21:03
센트리 구성하기https://docs.sentry.io/platforms/dart/guides/flutter/#install
파워쉘에서
$downloadUrl = "https://github.com/getsentry/sentry-wizard/releases/download/v5.1.0/sentry-wizard-win-x64.exe"
Invoke-WebRequest $downloadUrl -OutFile sentry-wizard.exe
./sentry-wizard.exe -i flutter
프로젝트 내에서 센트리 초기화
import 'package:flutter/widgets.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
Future<void> main() async {
await SentryFlutter.init(
(options) {
options.dsn = 'https://42581d6f0bfbf152113239f124e5b691@o4509936148348928.ingest.us.sentry.io/4509961160491008';
// Adds request headers and IP for users, for more info visit:
// https://docs.sentry.io/platforms/dart/guides/flutter/data-management/data-collected/
options.sendDefaultPii = true;
// performance
// Set tracesSampleRate to 1.0 to capture 100% of transactions for tracing.
// We recommend adjusting this value in production.
options.tracesSampleRate = 1.0;
// performance
// profiling
// The sampling rate for profiling is relative to tracesSampleRate
// Setting to 1.0 will profile 100% of sampled transactions:
// Note: Profiling alpha is available for iOS and macOS since SDK version 7.12.0
options.profilesSampleRate = 1.0;
// profiling
// logs
// Enable logs to be sent to Sentry
options.enableLogs = true;
// logs
// session-replay
// Record session replays for 100% of errors and 10% of sessions
options.replay.onErrorSampleRate = 1.0;
options.replay.sessionSampleRate = 0.1;
// session-replay
},
appRunner: () => runApp(
SentryWidget(
child: MyApp(),
),
),
);
// you can also configure SENTRY_DSN, SENTRY_RELEASE, SENTRY_DIST, and
// SENTRY_ENVIRONMENT via Dart environment variable (--dart-define)
}
센트리 프로젝트를 구성 한 후 센트리에서 제공하는 widzard로 설치가 끝나면 초기화구성까지 되어있다.
1. 실행 테스트
위 설정이 끝났다면 flutter run으로 앱을 실행한다.
Sentry SDK는 기본 템플릿 안에 테스트 예외 코드를 포함하고 있어 실행 직후 자동으로 예외 이벤트가 발생한다.
- 앱 실행 → 콘솔 로그에서 Sentry 관련 출력 확인
- Sentry 대시보드 → Issues 탭에서 이벤트가 수집되었는지 확인

2. 테스트 코드 제거
대시보드에서 이벤트가 정상적으로 올라온 것이 확인되면, main.dart의 테스트 예외 코드는 제거한다.
3. 프로덕션 설정 팁
- 샘플링 비율 조정100% 수집은 개발환경에서는 좋지만, 운영환경에서는 서버 부하와 비용이 커지므로 0.1~0.2 수준 권장.
- options.tracesSampleRate = 0.2; options.profilesSampleRate = 0.2;
둘 다 Sentry에서 성능/프로파일링 데이터를 얼마나 수집할지 비율을 정하는 옵션이다.
- options.tracesSampleRate
→ 트랜잭션(화면 전환, API 호출 등 성능 추적 단위)을 몇 % 전송할지 정함.
1.0 = 100% 전송, 0.2 = 20% 전송. - options.profilesSampleRate
→ 프로파일링(코드 실행 시 CPU·메모리 사용, 함수 호출 시간 등)을 몇 % 전송할지 정함.
이 값은 tracesSampleRate와 연동됨. 즉, 트레이싱이 잡힌 20% 중에서 20%만 프로파일링 데이터도 같이 전송.
- 환경 분리
개발/운영 DSN을 --dart-define이나 .env로 관리해서 환경에 따라 다르게 설정한다. - flutter run --dart-define=SENTRY_DSN=<개발 DSN> flutter build apk --dart-define=SENTRY_DSN=<운영 DSN>
- 추가 기능
- options.sendDefaultPii = true → 사용자 식별자 포함
- options.enableLogs = true → SDK 내부 로그 Sentry로 전송
- options.replay.* → 세션 리플레이 활용 가능(웹/모바일 지원 확인 필요)
DSN
- DSN(Data Source Name) = SDK가 이벤트를 보낼 엔드포인트 주소 + 키.
- 앱에서 발생한 에러/트레이스가 어느 Sentry 프로젝트로 들어가야 하는지 식별해 준다.
보안 측면
- 비공개 비밀키(secret key)가 아니라 공개 발행 키(public key) 성격이다.
→ 모바일/프런트엔드 앱 코드에 그대로 포함하는 게 정상적인 사용 방식이다.
→ 노출된다고 해서 프로젝트에 직접 접근하거나 삭제 같은 관리 권한이 생기지 않는다. - 하지만 악의적인 사용자가 이 DSN을 알면 임의의 이벤트를 네 프로젝트에 스팸처럼 전송할 수 있다.
→ 보안 침해는 아니지만 프로젝트 데이터 오염 우려는 있다.
안전하게 쓰는 방법
- 클라이언트 앱(FE/모바일): 지금처럼 코드에 DSN 직접 포함해도 무방.
- 서버 사이드 비밀(관리 API Key, Auth Token 등)은 절대 코드에 넣지 않는다.
- 운영 환경에서 DSN을 하드코딩하기 싫다면 .env / --dart-define으로 주입해서 관리하면 된다:
const sentryDsn = String.fromEnvironment('SENTRY_DSN'); - flutter run --dart-define=SENTRY_DSN=<dsn>
'앱 > Flutter&Dart' 카테고리의 다른 글
| [flutter-sns-project - 10]안드로이드 릴리즈 단계 요약 (0) | 2025.09.05 |
|---|---|
| [flutter-sns-project - 9] 트러블슈팅 - 구글로그인 중간에 화면 나갈시 그대로 홈 화면으로 진입되는 문제 (0) | 2025.09.04 |
| [flutter-sns-project - 7] 트러블슈팅 - 이메일/패스워드 인자 순서 뒤바뀐 로그인/회원가입 실패 (0) | 2025.09.03 |
| [flutter-sns-project - 6] 트러블슈팅 - 로그인 수행시 Null오류 (0) | 2025.09.02 |
| [flutter-sns-project - 5] cloude_firestore ios 빌드 오류, 로그인 UI구현 (1) | 2025.09.01 |