🔍 Sentry.io āϕ⧀?
Sentry.io āĻāĻ•āϟāĻŋ āĻ“āĻĒ⧇āύ-āϏ⧋āĻ°ā§āϏ āĻŦāĻžāĻ— āĻŸā§āĻ°ā§āϝāĻžāĻ•āĻŋāĻ‚ āϟ⧁āϞ āϝāĻž āϰāĻŋā§Ÿā§‡āϞ-āϟāĻžāχāĻŽā§‡ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇āϰ āĻ¤ā§āϰ⧁āϟāĻŋ (error), āĻ•ā§āĻ°ā§āϝāĻžāĻļ, āĻāĻŦāĻ‚ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāĻ¨ā§āϏ āϏāĻŽāĻ¸ā§āϝāĻž āĻļāύāĻžāĻ•ā§āϤ āĻ“ āϰāĻŋāĻĒā§‹āĻ°ā§āϟ āĻ•āϰ⧇āĨ¤ āĻāϟāĻŋ āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰāĻĻ⧇āϰāϕ⧇ āĻĻā§āϰ⧁āϤ āϏāĻŽāĻ¸ā§āϝāĻžāϰ āĻ‰ā§ŽāϏ āϖ⧁āρāĻœā§‡ āĻŦ⧇āϰ āĻ•āϰāϤ⧇ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰ⧇, āϝāĻžāϤ⧇ āĻ•āϰ⧇ āϤāĻžāϰāĻž āĻĻā§āϰ⧁āϤ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āĻŽā§‚āϞ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϗ⧁āϞ⧋ āĻšāϞ⧋:

āϰāĻŋā§Ÿā§‡āϞ-āϟāĻžāχāĻŽ Error āĻŽāύāĻŋāϟāϰāĻŋāĻ‚

Stack trace āϏāĻš error details

Issue grouping āĻ“ tagging

GitHub, Slack āϏāĻš āύāĻžāύāĻž āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽā§‡āϰ āϏāĻžāĻĨ⧇ integration

Performance monitoring (APM)

🛠 Laravel-āĻ Sentry āϏ⧇āϟāφāĻĒ āĻ•āϰāĻžāϰ āϧāĻžāĻĒāϏāĻŽā§‚āĻš
Laravel-āĻ Sentry āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āφāĻĒāύāĻžāϕ⧇ āύāĻŋāĻšā§‡āϰ āϧāĻžāĻĒāϗ⧁āϞ⧋ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇:

ā§§. Composer āĻĻāĻŋā§Ÿā§‡ āĻĒā§āϝāĻžāϕ⧇āϜ āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧁āύ:

composer require sentry/sentry-laravel

⧍. .env āĻĢāĻžāχāϞ⧇ DSN āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰ⧁āύ:

SENTRY_LARAVEL_DSN=https://@o.ingest.sentry.io/
SENTRY_TRACES_SAMPLE_RATE=1.0

âš ī¸ DSN āĻĒāĻžāĻ“ā§ŸāĻž āϝāĻžāĻŦ⧇ Sentry.io āϤ⧇ āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ āϤ⧈āϰāĻŋāϰ āĻĒāϰāĨ¤

ā§Š. config/app.php āĻŦāĻž config/sentry.php (auto-published āĻšāϞ⧇) āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻšā§‡āĻ• āĻ•āϰ⧁āύ

php artisan vendor:publish --tag=sentry-config

ā§Ē. Laravel exception āĻŦāĻž āϞāĻ— āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰāϤ⧇:
Laravel āĻāϰ Handler.php āĻĢāĻžāχāϞ āϖ⧁āϞ⧇ report() āĻŽā§‡āĻĨāĻĄā§‡ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύ:

use Sentry\Laravel\Facade as Sentry;

public function report(Throwable $exception)
{
    if (app()->bound('sentry') && $this->shouldReport($exception)) {
        Sentry::captureException($exception);
    }

    parent::report($exception);
}

āύāĻŋāĻšā§‡ āĻāĻ•āϟāĻŋ Real Laravel āϕ⧋āĻĄ āωāĻĻāĻžāĻšāϰāĻŖ āĻĻ⧇āĻ“ā§ŸāĻž āĻšāϞ⧋ āϝ⧇āĻ–āĻžāύ⧇ Sentry āĻĻāĻŋā§Ÿā§‡ āĻāĻ•āϟāĻŋ exception āϧāϰāĻž āĻšāĻšā§āϛ⧇ āĻāĻŦāĻ‚ āϤāĻž Sentry dashboard-āĻ āϰāĻŋāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇:

✅ Laravel āϕ⧋āĻĄ (Sentry integration)

json([
                'message' => 'Something went wrong!',
                'error' => $e->getMessage(),
            ], 500);
        }

        return response()->json([
            'result' => $result,
        ]);
    }
}

🛠 āĻ•āĻžāϜāϟāĻŋ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ•āϰ⧇?
10 / 0 āĻāĻ•āϟāĻŋ DivisionByZeroError āϤ⧈āϰāĻŋ āĻ•āϰāĻŦ⧇āĨ¤

captureException($e) āĻāχ āϞāĻžāχāύ⧇ Sentry API-āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻ¤ā§āϰ⧁āϟāĻŋ āϰāĻŋāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤

āφāĻĒāύāĻŋ āφāĻĒāύāĻžāϰ Sentry Dashboard-āĻ āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ āĻāχ error āϞāĻ— āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻŦ⧇āύ, Stack Trace āϏāĻšāĨ¤

Laravel-āĻāϰ āϝ⧇āϕ⧋āύ⧋ āϏāĻžāĻ°ā§āĻ­āĻŋāϏ, āĻ•āĻžāĻ¸ā§āϟāĻŽ āϞāϜāĻŋāĻ•, āĻ…āĻĨāĻŦāĻž āĻŦā§āϝāĻžāĻ•āĻ—ā§āϰāĻžāωāĻ¨ā§āĻĄ āϜāĻŦ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻāχ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻžā§ŸāĨ¤

āĻāĻ–āύ Laravel āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇ āϕ⧋āύ⧋ āĻ¤ā§āϰ⧁āϟāĻŋ āĻšāϞ⧇ āϤāĻž Sentry dashboard-āĻ āĻĻ⧇āĻ–āĻž āϝāĻžāĻŦ⧇āĨ¤

📱 Flutter-āĻ Sentry āϏ⧇āϟāφāĻĒ āĻ•āϰāĻžāϰ āϧāĻžāĻĒāϏāĻŽā§‚āĻš
ā§§. pubspec.yaml āĻ dependency āϝ⧋āĻ— āĻ•āϰ⧁āύ:

dependencies:
  sentry_flutter: ^7.10.1 # āϏāĻ°ā§āĻŦāĻļ⧇āώ āĻ­āĻžāĻ°ā§āϏāύ āĻšā§‡āĻ• āĻ•āϰ⧁āύ

⧍. main.dart āĻĢāĻžāχāϞ⧇ āχāύāĻŋāĻļāĻŋ⧟āĻžāϞāĻžāχāϜ āĻ•āϰ⧁āύ:

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

Future main() async {
  await SentryFlutter.init(
    (options) {
      options.dsn = 'https://@o.ingest.sentry.io/';
      options.tracesSampleRate = 1.0; // āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāĻ¨ā§āϏ āĻŽāύāĻŋāϟāϰāĻŋāĻ‚ā§Ÿā§‡āϰ āϜāĻ¨ā§āϝ
    },
    appRunner: () => runApp(MyApp()),
  );
}
ā§Š. āĻ¤ā§āϰ⧁āϟāĻŋ āϰāĻŋāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāĻžāϰ āωāĻĻāĻžāĻšāϰāĻŖ:
try {
  throw Exception('āĻāχāϟāĻž āĻāĻ•āϟāĻž āĻŸā§‡āĻ¸ā§āϟ āĻāĻ•ā§āϏāϏ⧇āĻĒāĻļāύ');
} catch (exception, stackTrace) {
  await Sentry.captureException(
    exception,
    stackTrace: stackTrace,
  );
}

āύāĻŋāĻšā§‡ āφāĻŽāĻŋ Laravel āĻ“ Flutter – āωāĻ­ā§Ÿā§‡āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻ•āϰ⧇ āĻĄā§‡āĻŽā§‹ āϕ⧋āĻĄ āĻāĻŦāĻ‚ Sentry.io Dashboard-āĻ āϕ⧇āĻŽāύ āĻ•āϰ⧇ error āĻĻ⧇āĻ–āĻž āϝāĻžā§Ÿ āϤāĻžāϰ āĻ¸ā§āĻ•ā§āϰāĻŋāύāĻļāϟ āϞ⧁āĻ• āϕ⧇āĻŽāύ āĻšā§Ÿ, āϤāĻžāĻ“ āωāĻ˛ā§āϞ⧇āĻ– āĻ•āϰāϞāĻžāĻŽāĨ¤

📌 Laravel āĻĄā§‡āĻŽā§‹ āϕ⧋āĻĄ (Sentry āϏāĻš)

has('amount')) {
                throw new Exception("Amount parameter is missing");
            }

            // āĻāĻ–āĻžāύ⧇ āφāϰāĻ“ āĻĒ⧇āĻŽā§‡āĻ¨ā§āϟ āĻĒā§āϰāϏ⧇āϏāĻŋāĻ‚ āϕ⧋āĻĄ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇...

            return response()->json(['message' => 'Payment processed']);
        } catch (Exception $e) {
            captureException($e); // Sentry āϤ⧇ exception āĻĒāĻžāĻ āĻžāύ⧋ āĻšāĻšā§āϛ⧇

            return response()->json([
                'error' => 'Payment failed',
                'message' => $e->getMessage()
            ], 500);
        }
    }
}

āĻāχ āϰāĻ•āĻŽ āĻāĻ•āϟāĻž exception āφāĻĒāύāĻŋ āϝāĻ–āύ āĻšāĻŋāϟ āĻ•āϰāĻŦ⧇āύ /api/payment (amount āĻ›āĻžā§œāĻž), āϤāĻ–āύ Sentry āĻĄā§āϝāĻžāĻļāĻŦā§‹āĻ°ā§āĻĄā§‡ āϏ⧇āϟāĻŋ āĻāĻŽāύāĻ­āĻžāĻŦ⧇ āĻĻ⧇āĻ–āĻž āϝāĻžāĻŦ⧇:

đŸ–ŧī¸ Sentry.io Dashboard-āĻ āϕ⧇āĻŽāύ āĻĻ⧇āĻ–āĻž āϝāĻžā§Ÿ (Laravel)

Exception: Amount parameter is missing
File: PaymentController.php
Line: 15
User: ID 34 (authenticated)
Tags: environment=production
Sentry Stacktrace āĻ āĻĒā§‚āĻ°ā§āĻŖ āϕ⧋āĻĄā§‡āϰ āϞāĻžāχāύ⧇āϰ breakdown, context āĻ“ variable values āĻĨāĻžāϕ⧇āĨ¤

📱 Flutter āĻĄā§‡āĻŽā§‹ āϕ⧋āĻĄ (Sentry āϏāĻš)

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

void main() async {
  await SentryFlutter.init(
    (options) {
      options.dsn = 'https://@o.ingest.sentry.io/';
    },
    appRunner: () => runApp(MyApp()),
  );
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Sentry Demo',
      home: Scaffold(
        appBar: AppBar(title: Text('Flutter Sentry Example')),
        body: Center(
          child: ElevatedButton(
            child: Text('Generate Error'),
            onPressed: () async {
              try {
                throw Exception("Manual Flutter Exception");
              } catch (error, stackTrace) {
                await Sentry.captureException(error, stackTrace: stackTrace);
              }
            },
          ),
        ),
      ),
    );
  }
}

đŸ–ŧī¸ Sentry.io Dashboard-āĻ āϕ⧇āĻŽāύ āĻĻ⧇āĻ–āĻž āϝāĻžā§Ÿ (Flutter)

Exception: Manual Flutter Exception
Platform: android
User: anonymous
Stack Trace:
MyApp.build.
MainActivity.kt -> FlutterMainActivity
āĻāĻ›āĻžā§œāĻž Geo, OS version, device info āχāĻ¤ā§āϝāĻžāĻĻāĻŋāĻ“ āĻĒāĻžāĻ“ā§ŸāĻž āϝāĻžāĻŦ⧇āĨ¤

đŸ§Ē āϕ⧇āύ Sentry āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇āύ?
✅ āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰ āĻšāĻŋāϏ⧇āĻŦ⧇ āφāĻĒāύāĻŋ āϰāĻŋā§Ÿā§‡āϞ āϟāĻžāχāĻŽā§‡ āϏāĻŽāĻ¸ā§āϝāĻž āϜāĻžāύāĻŦ⧇āύ

✅ āχāωāϜāĻžāϰ āĻāĻ•ā§āϏāĻĒ⧇āϰāĻŋā§Ÿā§‡āĻ¨ā§āϏ āĻ­āĻžāϞ⧋ āϰāĻžāĻ–āϤ⧇ āĻĒāĻžāϰāĻŦ⧇āύ

✅ āĻ•ā§āĻ°ā§āϝāĻžāĻļ āϰāĻŋāĻĒā§‹āĻ°ā§āϟ āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ āϏāĻšāϜ āĻšāĻŦ⧇

✅ āϟāĻŋāĻŽā§‡ āĻ•āĻžāĻœā§‡āϰ āĻĢā§āϞ⧋ āφāϰāĻ“ āĻŽāϏ⧃āĻŖ āĻšāĻŦ⧇

✨ āωāĻĒāϏāĻ‚āĻšāĻžāϰ
Laravel āĻŦāĻž Flutter — āφāĻĒāύāĻŋ āϝ⧇āϟāĻŋāχ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āύ āύāĻž āϕ⧇āύ, Sentry āφāĻĒāύāĻžāϕ⧇ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āϟ āϞāĻžāχāĻĢ āϏāĻžāχāϕ⧇āϞ āφāϰāĻ“ āĻĒā§āϰ⧋āĻĢ⧇āĻļāύāĻžāϞ āĻ“ āĻĒā§āϰ⧋āĻ…ā§āϝāĻžāĻ•āϟāĻŋāĻ­ āĻ•āϰāϤ⧇ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰāĻŦ⧇āĨ¤ āĻāϤ⧇ āφāĻĒāύāĻŋ āĻļ⧁āϧ⧁ āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ āĻ•āϰāϤ⧇āχ āĻĒāĻžāϰāĻŦ⧇āύ āύāĻž, āĻŦāϰāĻ‚ āϏāĻŽā§ŸāĻŽāϤ⧋ āĻ…ā§āϝāĻžāĻ•āĻļāĻžāύ āύāĻŋā§Ÿā§‡ āχāωāϜāĻžāϰ⧇āϰ āĻŸā§āϰāĻžāĻ¸ā§āϟāĻ“ āĻ…āĻ°ā§āϜāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āύāĨ¤

ProgrammerHasan