Symfony তে Monolog কনফিগারেশন

Monolog এবং লগিং - সিম্ফনি (Symfony) - Web Development

250

Monolog হলো একটি শক্তিশালী এবং জনপ্রিয় লগিং লাইব্রেরি, যা Symfony অ্যাপ্লিকেশনে লগ তথ্য সংগ্রহ, মনিটরিং এবং বিশ্লেষণের জন্য ব্যবহৃত হয়। Symfony-তে Monolog কনফিগারেশন করা খুবই সহজ এবং নমনীয়, কারণ Symfony স্বয়ংক্রিয়ভাবে MonologBundle অন্তর্ভুক্ত করে, যা আপনাকে সহজে লগ ফাইল তৈরি, লগ স্তর নির্ধারণ, এবং বিভিন্ন আউটপুট স্ট্রিমে লগ পাঠাতে সহায়তা করে।

এখানে আমরা Symfony-তে Monolog কনফিগারেশন করার বিভিন্ন উপায় এবং উদাহরণগুলি দেখব।


MonologBundle ইনস্টলেশন

Symfony 4 এবং তার পরবর্তী সংস্করণে MonologBundle ইতিমধ্যে ডিফল্ট প্যাকেজ হিসেবে অন্তর্ভুক্ত থাকে। যদি আপনার প্রজেক্টে এটি না থাকে, তবে আপনি Composer ব্যবহার করে এটি ইনস্টল করতে পারেন:

composer require symfony/monolog-bundle

এটি MonologBundle ইনস্টল করবে, এবং আপনার Symfony প্রজেক্টের জন্য লগিং সক্ষম করবে।


Monolog কনফিগারেশন ফাইল (monolog.yaml)

Symfony-তে Monolog কনফিগারেশনের জন্য ডিফল্টভাবে config/packages/monolog.yaml ফাইলটি ব্যবহার করা হয়। এই ফাইলে আপনি লগিং লেভেল, হ্যান্ডলার, এবং অন্যান্য সেটিংস কনফিগার করতে পারবেন।

monolog.yaml কনফিগারেশন উদাহরণ

monolog:
    # কাস্টম লগ চ্যানেল সংজ্ঞায়িত
    channels: ['app']

    # হ্যান্ডলারস
    handlers:
        # মূল লগ হ্যান্ডলার (ফাইল লগ)
        main:
            type: stream
            path: '%kernel.logs_dir%/app.log'  # লগ ফাইলের পাথ
            level: debug  # 'debug', 'info', 'notice', 'warning', 'error', 'critical' ইত্যাদি স্তরের লগ
            channels: ['app']  # এই চ্যানেলের জন্য লগ

        # কনসোল হ্যান্ডলার (ডেভেলপমেন্ট এবং ডিবাগের জন্য)
        console:
            type: console
            channels: ['app']

        # রোটেটিং ফাইল হ্যান্ডলার
        rotating_file:
            type: rotating_file
            path: '%kernel.logs_dir%/rotated_app.log'
            level: debug
            max_files: 10  # সর্বোচ্চ ১০টি ফাইল সংরক্ষণ করবে

এখানে:

  • main হ্যান্ডলারটি app.log ফাইল তৈরি করবে এবং সমস্ত debug লেভেলের লগ এই ফাইলে জমা করবে।
  • console হ্যান্ডলারটি কনসোলের মাধ্যমে লগ দেখাবে।
  • rotating_file হ্যান্ডলারটি ফাইলের আকার সীমাবদ্ধ রাখবে এবং পুরানো ফাইলগুলো রোটেট করবে।

Monolog লগ স্তর (Log Levels)

Monolog-এ বিভিন্ন লগ স্তর (log level) রয়েছে, যা আপনি কনফিগারেশনে নির্ধারণ করতে পারেন। লগ স্তরের কিছু সাধারণ উদাহরণ:

  • DEBUG: ডিবাগ তথ্য, উন্নয়ন পর্যায়ে ব্যবহৃত হয়।
  • INFO: সাধারণ কার্যক্রম বা স্ট্যাটাস তথ্য।
  • WARNING: সতর্কতা, যা কিন্তু অ্যাপ্লিকেশন ব্যাহত করতে পারে না।
  • ERROR: অ্যাপ্লিকেশনের কার্যকারিতায় সমস্যা।
  • CRITICAL: বড় সমস্যা, যা অ্যাপ্লিকেশনের কার্যকারিতা থামাতে পারে।
  • ALERT: গুরুতর সমস্যা যা অ্যাপ্লিকেশন বন্ধ করে দিতে পারে।
  • EMERGENCY: অ্যাপ্লিকেশন সম্পূর্ণভাবে ভেঙে যাওয়ার অবস্থায় লগ।

আপনি যে লগ স্তর নির্ধারণ করবেন, Monolog সেটি অনুযায়ী শুধুমাত্র সেই স্তরের বা তার উপরের স্তরের লগগুলো রেকর্ড করবে।

লগ স্তরের উদাহরণ

monolog:
    handlers:
        main:
            type: stream
            path: '%kernel.logs_dir%/app.log'
            level: error  # 'error' স্তরের লগ এবং তার উপরের স্তরের (critical, alert, emergency) লগ রেকর্ড হবে

এখানে, level: error কনফিগারেশনটি নির্দেশ করছে যে শুধুমাত্র ERROR, CRITICAL, ALERT, এবং EMERGENCY স্তরের লগই রেকর্ড হবে।


Monolog হ্যান্ডলার (Handlers)

Monolog কনফিগারেশনে বিভিন্ন ধরনের হ্যান্ডলার কনফিগার করা যায়, যার মাধ্যমে আপনি লগ আউটপুট বিভিন্ন জায়গায় পাঠাতে পারেন, যেমন ফাইল, মেইল, ডাটাবেস, কনসোল ইত্যাদি।

File Handler (StreamHandler)

এটি সাধারণত লগ তথ্য একটি ফাইলে সংরক্ষণ করতে ব্যবহৃত হয়। এর জন্য stream টাইপ ব্যবহার করা হয়।

monolog:
    handlers:
        main:
            type: stream
            path: '%kernel.logs_dir%/app.log'  # লগ ফাইলের পাথ
            level: debug  # 'debug', 'info', 'warning', 'error' ইত্যাদি স্তরের লগ

RotatingFileHandler

এটি লগ ফাইলের আকার সীমাবদ্ধ রাখে এবং পুরানো ফাইলগুলোকে রোটেট করে (নতুন ফাইল তৈরি)। একটি সীমিত সংখ্যক পুরানো লগ ফাইল সংরক্ষণ করা হয়।

monolog:
    handlers:
        rotating_file:
            type: rotating_file
            path: '%kernel.logs_dir%/rotated_app.log'
            level: info
            max_files: 10  # সর্বোচ্চ ১০টি ফাইল সংরক্ষণ

Mail Handler

এটি লগ তথ্য ইমেইলে পাঠানোর জন্য ব্যবহৃত হয়।

monolog:
    handlers:
        mail:
            type: mail
            to: 'admin@example.com'
            level: critical  # 'critical' এবং তার উপরের স্তরের লগ ইমেইলে পাঠানো হবে

Database Handler

এই হ্যান্ডলারটি ডাটাবেসে লগ সংরক্ষণ করতে ব্যবহৃত হয়। এটি একটি ডাটাবেস টেবিলের মাধ্যমে লগ সংরক্ষণ করতে পারে, তবে সাধারণত এটি বেশি কাস্টম কনফিগারেশন চায়।


Monolog ফরম্যাটার (Formatters)

Monolog আপনাকে লগ আউটপুট কাস্টমাইজড ফরম্যাটে প্রদর্শন করার জন্য ফরম্যাটার ব্যবহার করতে দেয়। ফরম্যাটার ব্যবহার করে আপনি লগের আউটপুটকে আরও পাঠযোগ্য এবং সহজে বিশ্লেষণযোগ্য করে তুলতে পারেন।

LineFormatter উদাহরণ

monolog:
    handlers:
        main:
            type: stream
            path: '%kernel.logs_dir%/app.log'
            level: debug
            formatter: monolog.formatter.line

LineFormatter একটি সাধারণ ফরম্যাটার যা লগের সময়, স্তর, বার্তা ইত্যাদি কাস্টম ফরম্যাটে দেখায়।

Custom Formatter উদাহরণ

আপনি কাস্টম formatter তৈরি করতে পারেন, যেমন JSON ফরম্যাটে লগ আউটপুট:

monolog:
    handlers:
        main:
            type: stream
            path: '%kernel.logs_dir%/app.log'
            level: debug
            formatter: monolog.formatter.json

এখানে, লগ JSON ফরম্যাটে আউটপুট হবে, যা পরে বিশ্লেষণ বা প্রসেসিং করতে সহায়ক হতে পারে।


সারাংশ

Symfony তে Monolog কনফিগারেশন খুবই নমনীয় এবং শক্তিশালী, যা ডেভেলপারদের লগ তথ্য বিভিন্ন আউটপুট স্ট্রিমে পাঠাতে এবং কাস্টম ফরম্যাটে প্রদর্শন করতে সহায়ক। আপনি Monolog ব্যবহার করে সহজেই লগ স্তর, হ্যান্ডলার, ফরম্যাটার কনফিগার করতে পারেন, যা অ্যাপ্লিকেশনের কার্যকারিতা মনিটর করতে এবং ত্রুটি চিহ্নিত করতে অত্যন্ত গুরুত্বপূর্ণ। Monolog-কে Symfony অ্যাপ্লিকেশনগুলিতে লগিং সিস্টেম হিসেবে ব্যবহার করা একটি শ্রেষ্ঠ পদ্ধতি, যা ডেভেলপারদের কোড ডিবাগ এবং পারফরম্যান্স মনিটরিংয়ে সহায়ক।

Content added By
Promotion

Are you sure to start over?

Loading...