লারাভেল লগিং (Laravel Logging)

Web Development - লারাভেল (Laravel) - লারাভেল ব্যাসিক (Laravel Basic) |
4
4

লারাভেল লগিং (Logging): বিস্তারিত বাংলা গাইড

লারাভেলে লগিং একটি গুরুত্বপূর্ণ ব্যবস্থা যা অ্যাপ্লিকেশনটি চলাকালীন কী ঘটছে তা পর্যবেক্ষণ করতে সাহায্য করে। এটি ডেভেলপারদের ত্রুটি, ব্যতিক্রম এবং গুরুত্বপূর্ণ কার্যক্রমের তথ্য সংগ্রহ করতে দেয়, যা সমস্যার সমাধানে সহায়ক হয়।

২. কনফিগারেশন
লারাভেল লগিং কনফিগারেশন config/logging.php ফাইলে পাওয়া যায়। এখানে বিভিন্ন চ্যানেল, ড্রাইভার এবং লগ স্তরের কনফিগারেশন করা হয়।

'log_level' => env('LOG_LEVEL', 'debug'),
'channels' => [
    'stack' => [
        'driver' => 'stack',
        'channels' => ['single', 'slack'],
    ],
    'single' => [
        'driver' => 'single',
        'path' => storage_path('logs/laravel.log'),
        'level' => 'debug',
    ],
    'slack' => [
        'driver' => 'slack',
        'url' => env('LOG_SLACK_WEBHOOK_URL'),
        'username' => 'Laravel Log',
        'emoji' => ':boom:',
        'level' => 'critical',
    ],
],

৩. উপলব্ধ চ্যানেল ড্রাইভার
লারাভেল বিভিন্ন ধরনের চ্যানেল ড্রাইভার সরবরাহ করে, যেমন:

  • single: একক লগ ফাইলে লিখে।
  • daily: প্রতিদিনের জন্য নতুন লগ ফাইল তৈরি করে।
  • slack: লগ বার্তাগুলি Slack চ্যানেলে পাঠায়।
  • syslog এবং errorlog: সিস্টেম লগ এবং ত্রুটি লগের সাথে কাজ করে।

৪. চ্যানেল প্রয়োজনীয়তা
প্রতিটি চ্যানেলের জন্য নির্দিষ্ট প্রয়োজনীয়তা থাকে, যেমন slack চ্যানেলের জন্য একটি Slack ওয়েবহুক URL প্রয়োজন।

৫. ডিপ্রিকেটেড সতর্কতা লগ করা
Laravel 9 থেকে ডিপ্রিকেটেড ফিচারের লগ করার জন্য সমর্থন দেয়। deprecate() মেথড ব্যবহার করে আপনি সতর্কতা লগ করতে পারেন।

Log::deprecate('এই ফিচারটি ভবিষ্যতে সরানো হবে।');

৬. লগ স্ট্যাক তৈরি করা
একাধিক চ্যানেল একত্রিত করে একটি লগ স্ট্যাক তৈরি করতে পারেন, যা একাধিক আউটপুটে একই সময়ে লগ লেখার সুবিধা দেয়।

'stack' => [
    'driver' => 'stack',
    'channels' => ['single', 'slack'],
],

৭. লগ বার্তা লেখা
লগ বার্তা লেখার জন্য Log ফেসেড ব্যবহার করা হয়। আপনি বিভিন্ন স্তরের লগ বার্তা লিখতে পারেন, যেমন emergency, alert, critical, error, warning, notice, info, এবং debug

Log::info('এটি একটি তথ্যগত বার্তা।');
Log::error('এটি একটি ত্রুটির বার্তা।');

৮. প্রসঙ্গগত তথ্য
লগ বার্তার সাথে অতিরিক্ত প্রসঙ্গগত তথ্য যুক্ত করা যায়:

Log::info('ব্যবহারকারীর তথ্য আপডেট করা হয়েছে', ['user_id' => $user->id]);

৯. নির্দিষ্ট চ্যানেলে লেখা
নির্দিষ্ট একটি চ্যানেলে লগ বার্তা পাঠানোর জন্য:

Log::channel('slack')->critical('Critical issue found!');

১০. মনোলগ চ্যানেল কাস্টমাইজেশন
লারাভেল Monolog লাইব্রেরি ব্যবহার করে লগিং প্রক্রিয়াটি পরিচালনা করে। Monolog এর হ্যান্ডলার কাস্টমাইজ করতে পারেন। উদাহরণস্বরূপ, slack চ্যানেলের জন্য কাস্টম Monolog হ্যান্ডলার ব্যবহার করা যায়।

```php
use Monolog\Handler\SlackWebhookHandler;
use Monolog\Logger;

Log::channel('slack')->getMonolog()->pushHandler(
    new SlackWebhookHandler($webhookUrl, '#channel', 'MonologBot', true, ':boom:', true, Logger::CRITICAL)
);
```

১১. কাস্টম চ্যানেল তৈরি করা
ফ্যাক্টরির মাধ্যমে কাস্টম চ্যানেল তৈরি করা সম্ভব:

```php
Log::extend('custom', function($app) {
    return new CustomLoggerHandler();
});
```

১২. পেইলের মাধ্যমে লগ মেসেজ টেইল করা
pail টুল ব্যবহার করে লগ বার্তাগুলি রিয়েল টাইমে টেইল করা যায়।

**ইনস্টলেশন**  
`pail` ইনস্টল করতে নিম্নলিখিত কমান্ড ব্যবহার করুন:

```bash
composer require pail/pail
```

**ব্যবহার**  
ইনস্টলেশনের পর, আপনি টার্মিনালে কমান্ড দিয়ে লগ টেইল করতে পারেন:

```bash
php artisan log:tail
```

১৩. লগ ফিল্টার করা
আপনি লগ বার্তাগুলিকে ফিল্টার করে নির্দিষ্ট স্তরের বার্তাগুলি দেখতে পারেন। উদাহরণস্বরূপ, শুধু error স্তরের বার্তাগুলি দেখতে চাইলে:

```bash
php artisan log:tail --level=error
```

এভাবে, লারাভেলের শক্তিশালী লগিং ব্যবস্থা ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনের কার্যক্রম মনিটর করতে এবং ত্রুটি সমাধান করতে পারবেন।

Content added By
Promotion