লগিং ফরম্যাট কাস্টমাইজ করা

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

228

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

Symfony-তে লগিং ফরম্যাট কাস্টমাইজ করার জন্য আপনি Monolog Configuration-এর মাধ্যমে বিভিন্ন ধরনের ফরম্যাট নির্ধারণ করতে পারবেন।


Monolog Configuration

Symfony-তে Monolog কনফিগারেশন সাধারণত config/packages/monolog.yaml ফাইলে রাখা হয়। আপনি এই ফাইলে লগ ফরম্যাট কাস্টমাইজ করতে পারবেন।

Monolog কনফিগারেশন ফাইল উদাহরণ

monolog:
  handlers:
    main:
      type: stream
      level: debug
      channels: ['!event']
      path: '%kernel.logs_dir%/%kernel.environment%.log'
      formatter: monolog.formatter.line
    console:
      type: console
      level: info
      channels: ['!event']
    custom:
      type: stream
      path: '%kernel.logs_dir%/custom.log'
      level: warning
      formatter: custom_formatter
  formatters:
    monolog.formatter.line:
      format: "[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n"
    custom_formatter:
      format: "[%datetime%] - %level_name% - %message% | %context% | %extra%\n"

ব্যাখ্যা:

  • handlers: এখানে লগিং-এর জন্য বিভিন্ন handlers সংজ্ঞায়িত করা হয়েছে।
    • main handler স্ট্যান্ডার্ড লগ ফাইলের জন্য ব্যবহৃত হচ্ছে, যা %kernel.logs_dir%/%kernel.environment%.log অবস্থানে লগ তৈরি করবে।
    • console handler কনসোল আউটপুটে লগ করবে, যা info লেভেল পর্যন্ত থাকবে।
    • custom handler কাস্টম লগ ফাইল তৈরি করবে, যেখানে warning লেভেল এবং তার উপরের লগগুলো থাকবে।
  • formatters: এই অংশে লগের ফরম্যাট কাস্টমাইজ করা হয়েছে।
    • monolog.formatter.line ফরম্যাটে লগের লাইন কনফিগার করা হয়েছে, যা [datetime] level_name: message context extra ফরম্যাটে লগ তৈরি করবে।
    • custom_formatter কাস্টম ফরম্যাটে লগ তৈরি করবে, যেখানে [datetime] - level_name - message | context | extra ফরম্যাটে লগ তৈরি হবে।

লগ ফরম্যাট কাস্টমাইজেশন

বেসিক লগ ফরম্যাট:

monolog:
  formatters:
    monolog.formatter.line:
      format: "[%datetime%] %level_name%: %message% %context% %extra%\n"
  • %datetime%: লগের সময়
  • %level_name%: লগের লেভেল (যেমন: DEBUG, INFO, ERROR)
  • %message%: লগের বার্তা
  • %context%: অতিরিক্ত কনটেক্সট তথ্য (যেমন, ব্যবহারকারীর আইডি)
  • %extra%: অতিরিক্ত লগ তথ্য (যেমন, ট্রেস বা স্ট্যাক)

লগ ফরম্যাটে বিভিন্ন উপাদান যোগ করা:

এখন, আপনি লগ ফরম্যাটে আরও উপাদান যোগ করতে পারেন, যেমন IP অ্যাড্রেস, ইউজারনেম, URL ইত্যাদি।

monolog:
  formatters:
    monolog.formatter.line:
      format: "[%datetime%] %level_name%: %message% | IP: %extra.ip% | User: %extra.user% | URL: %extra.url%\n"

এখানে, extra অংশের মধ্যে ip, user, এবং url অ্যাড করা হয়েছে, যা আপনি লগ করার সময় প্রেরণ করতে পারবেন।


কাস্টম ফরম্যাটার তৈরি করা

আপনি যদি আরও জটিল লগ ফরম্যাট চান, তবে কাস্টম ফরম্যাটার তৈরি করতে পারেন।

namespace App\Logger;

use Monolog\Formatter\LineFormatter;

class CustomFormatter extends LineFormatter
{
    public function format(array $record): string
    {
        // কাস্টম লগ ফরম্যাট তৈরি
        return "[Custom - %datetime%] %level_name%: %message% | %context% | %extra%\n";
    }
}

এখন এই কাস্টম ফরম্যাটারটি monolog.yaml ফাইলে ব্যবহার করতে হবে:

monolog:
  formatters:
    custom_formatter:
      class: App\Logger\CustomFormatter
      arguments: ["[%datetime%] %level_name%: %message% | %context% | %extra%\n"]

এভাবে আপনি কাস্টম লগ ফরম্যাট তৈরি করে ব্যবহার করতে পারবেন।


লগ ফরম্যাট কাস্টমাইজেশনের অন্যান্য দিক

  1. লগ লেভেল:
    Symfony এর লগিং সিস্টেম লেভেল ভিত্তিক। আপনি আপনার পছন্দমতো লগ লেভেল ব্যবহার করতে পারেন, যেমন: debug, info, notice, warning, error, critical, alert, emergency
  2. মাল্টিপল লগ ফাইল:
    বিভিন্ন ধরনের লগের জন্য আলাদা আলাদা ফাইল রাখতে পারেন (যেমন, error.log, access.log)।
  3. লাইফটাইম রোটেশন:
    কিছু কনফিগারেশন দিয়ে আপনার লগ ফাইলগুলোর আকার বা সময়ের ভিত্তিতে নতুন ফাইল তৈরি করতে পারেন।

লগ রোটেশন কাস্টমাইজ করা

আপনি Symfony-তে লগ রোটেশন কনফিগার করতে পারেন, যাতে পুরনো লগ ফাইলগুলি স্বয়ংক্রিয়ভাবে আর্কাইভ হয়ে যায় এবং নতুন লগ ফাইল তৈরি হয়।

monolog:
  handlers:
    main:
      type: rotating_file
      level: debug
      path: '%kernel.logs_dir%/app.log'
      max_files: 7  # সর্বোচ্চ ৭টি লগ ফাইল রাখা হবে

এখানে, max_files নির্ধারণ করে কতটি লগ ফাইল রাখা যাবে এবং পুরনো ফাইলগুলো মুছে ফেলা হবে।


সারাংশ

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

Content added By
Promotion

Are you sure to start over?

Loading...