🔍 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://<your_public_key>@o<org_id>.ingest.sentry.io/<project_id>
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)
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Exception;
use function Sentry\captureException;
class TestController extends Controller
{
public function index()
{
try {
// ধরুন এখানে একটি সমস্যা তৈরি হচ্ছে
$result = 10 / 0; // Division by zero exception
} catch (Exception $e) {
// Sentry তে exception পাঠানো হচ্ছে
captureException($e);
// কাস্টম রেসপন্স
return response()->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<void> main() async {
await SentryFlutter.init(
(options) {
options.dsn = 'https://<your_public_key>@o<org_id>.ingest.sentry.io/<project_id>';
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 সহ)
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Exception;
use function Sentry\captureException;
class PaymentController extends Controller
{
public function processPayment(Request $request)
{
try {
// কল্পনা করুন এখানে পেমেন্ট গেটওয়ের মাধ্যমে ট্রানজেকশন হচ্ছে
if (!$request->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://<your_public_key>@o<org>.ingest.sentry.io/<project_id>';
},
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.<anonymous closure>
MainActivity.kt -> FlutterMainActivity
এছাড়া Geo, OS version, device info ইত্যাদিও পাওয়া যাবে।
🧪 কেন Sentry ব্যবহার করবেন?
✅ ডেভেলপার হিসেবে আপনি রিয়েল টাইমে সমস্যা জানবেন
✅ ইউজার এক্সপেরিয়েন্স ভালো রাখতে পারবেন
✅ ক্র্যাশ রিপোর্ট বিশ্লেষণ সহজ হবে
✅ টিমে কাজের ফ্লো আরও মসৃণ হবে
✨ উপসংহার
Laravel বা Flutter — আপনি যেটিই ব্যবহার করেন না কেন, Sentry আপনাকে ডেভেলপমেন্ট লাইফ সাইকেল আরও প্রোফেশনাল ও প্রোঅ্যাকটিভ করতে সাহায্য করবে। এতে আপনি শুধু বাগ ফিক্স করতেই পারবেন না, বরং সময়মতো অ্যাকশান নিয়ে ইউজারের ট্রাস্টও অর্জন করতে পারবেন।
SOCIAL SHARE CARD GENERATOR