Symfony ফ্রেমওয়ার্কে লগিং একটি অত্যন্ত গুরুত্বপূর্ণ অংশ, যা অ্যাপ্লিকেশনের কার্যকারিতা পর্যবেক্ষণ করতে এবং ডিবাগিংয়ের জন্য সহায়ক। Symfony লগিংয়ের জন্য Monolog ব্যবহার করে, যা একটি শক্তিশালী এবং নমনীয় PHP লাইব্রেরি। লগিং লেভেল এবং হ্যান্ডলারস ব্যবহারের মাধ্যমে আপনি লগ ফাইলের আউটপুট কাস্টমাইজ করতে এবং সঠিক সময়ে সঠিক লগ বার্তা রেকর্ড করতে পারবেন।
এতে অ্যাপ্লিকেশন এর অভ্যন্তরীণ অবস্থার পর্যবেক্ষণ সহজ হয়, এবং তা নির্দিষ্ট পরিস্থিতি অনুযায়ী উপযুক্ত আউটপুট (ফাইল, ডাটাবেস, ইমেইল, ইত্যাদি) প্রদান করতে সক্ষম হয়।
Monolog লগিং সিস্টেম
Symfony-তে Monolog একটি বহুল ব্যবহৃত লাইব্রেরি, যা বিভিন্ন উৎস থেকে লগ তৈরি এবং ম্যানেজমেন্ট করে। Monolog স্বয়ংক্রিয়ভাবে Symfony-তে অন্তর্ভুক্ত থাকে এবং এটি বিভিন্ন ধরনের লগিং লেভেল এবং হ্যান্ডলার প্রদান করে।
লগিং লেভেলস (Logging Levels)
Monolog এর বিভিন্ন লগিং লেভেল থাকে, যা লগ বার্তার গুরুত্বের উপর ভিত্তি করে শ্রেণীবদ্ধ করা হয়। এই লেভেলগুলো নির্ধারণ করে কোন লগ বার্তা কতটা গুরুতর এবং সেগুলি কোথায় রেকর্ড হবে।
লগিং লেভেলস:
- DEBUG
- সবচেয়ে কম গুরুত্বের লগ। সাধারণত ডিবাগgingয়ের জন্য ব্যবহৃত হয়।
- উদাহরণ:
logger->debug('Debugging message')
- INFO
- তথ্যগত লগ যা সাধারণ অপারেশন বা কার্যকলাপের তথ্য প্রদান করে।
- উদাহরণ:
logger->info('User logged in')
- NOTICE
- স্বাভাবিক পরিস্থিতি, তবে ব্যবহারকারী বা অ্যাপ্লিকেশনের জন্য গুরুত্বপূর্ণ কিছু ঘটনা।
- উদাহরণ:
logger->notice('Configuration changed')
- WARNING
- কোনো সমস্যা বা সাবধানতা বার্তা। এটি একটি সম্ভাব্য সমস্যা প্রদর্শন করতে পারে, তবে এটি অ্যাপ্লিকেশনকে থামায় না।
- উদাহরণ:
logger->warning('User login failed')
- ERROR
- একটি ত্রুটি যা অ্যাপ্লিকেশনের একটি অংশকে প্রভাবিত করে, কিন্তু পুরো সিস্টেম বন্ধ হয় না।
- উদাহরণ:
logger->error('Database connection failed')
- CRITICAL
- গুরুতর ত্রুটি, যা অ্যাপ্লিকেশনের একটি গুরুত্বপূর্ণ অংশে সমস্যা তৈরি করতে পারে।
- উদাহরণ:
logger->critical('Database unavailable')
- ALERT
- খুব গুরুতর ত্রুটি, যা দ্রুত সমাধান প্রয়োজন।
- উদাহরণ:
logger->alert('Disk space is full')
- EMERGENCY
- সবচেয়ে গুরুতর ত্রুটি, যা সিস্টেমের পুরোপুরি অপ্রত্যাশিত বা বিপর্যস্ত অবস্থা নির্দেশ করে।
- উদাহরণ:
logger->emergency('Server is down')
Monolog হ্যান্ডলারস (Handlers)
Monolog হ্যান্ডলারস ব্যবহার করে আপনি লগগুলি কোথায় রেকর্ড করবেন তা নির্ধারণ করতে পারেন। হ্যান্ডলার হল সেই উপাদান, যা লগ বার্তাগুলোকে প্রক্রিয়া করে এবং সেগুলিকে নির্দিষ্ট আউটপুট (ফাইল, ডাটাবেস, ইমেইল, ইত্যাদি) এ পাঠায়।
প্রধান হ্যান্ডলারস:
StreamHandler
- লগ বার্তাগুলি একটি ফাইলে রেকর্ড করতে ব্যবহৃত হয়। এটি সবচেয়ে সাধারণ হ্যান্ডলার, যেখানে আপনি লগ ফাইলের অবস্থান এবং নাম নির্ধারণ করতে পারেন।
উদাহরণ:
monolog: handlers: main: type: stream path: '%kernel.logs_dir%/app.log' level: debugএখানে:
path: লগ ফাইলের অবস্থান নির্ধারণ করে।level: কোন লেভেলের লগ রেকর্ড করা হবে তা নির্ধারণ করে।
- FirePHPHandler
- এটি FirePHP ব্রাউজার এক্সটেনশনের মাধ্যমে লগ বার্তা পাঠায়, যা ডেভেলপারদের জন্য ব্রাউজারে সরাসরি লগ দেখতে সহায়ক।
RotatingFileHandler
- এটি একটি লগ ফাইল তৈরি করে এবং সেই ফাইলটি একটি নির্দিষ্ট আকারে পৌঁছালে পুরানো লগ ফাইলগুলিকে সংরক্ষণ এবং নতুন ফাইল তৈরি করে।
উদাহরণ:
monolog: handlers: rotating_file: type: rotating_file path: '%kernel.logs_dir%/rotating_app.log' level: info max_files: 5এখানে:
max_files: কতগুলি পুরানো লগ ফাইল সংরক্ষণ করা হবে তা নির্ধারণ করে।
- SlackHandler
- এটি লগ বার্তাগুলি Slack চ্যানেলে পাঠানোর জন্য ব্যবহৃত হয়।
SwiftMailerHandler
- এটি একটি ইমেইল পাঠানোর জন্য ব্যবহৃত হয়, যখন একটি নির্দিষ্ট লেভেল (যেমন, ERROR বা CRITICAL) লগ হয়।
উদাহরণ:
monolog: handlers: email: type: swift_mailer to: 'admin@example.com' from: 'no-reply@example.com' subject: 'Critical error' level: critical
Symfony-তে Monolog কনফিগারেশন
Symfony-তে Monolog কনফিগার করতে config/packages/monolog.yaml ফাইল ব্যবহার করা হয়। এখানে আপনি বিভিন্ন হ্যান্ডলার, লেভেল এবং চ্যানেল কনফিগার করতে পারেন।
monolog.yaml উদাহরণ:
monolog:
channels: ['app']
handlers:
# Main log file handler
main:
type: stream
path: '%kernel.logs_dir%/app.log'
level: debug
channels: ['app']
# Error log file handler
error:
type: stream
path: '%kernel.logs_dir%/error.log'
level: error
channels: ['app']
# Rotate log files
rotating_file:
type: rotating_file
path: '%kernel.logs_dir%/rotating_app.log'
level: info
max_files: 7
এখানে:
channels: এটি বিশেষ চ্যানেলের জন্য লগ বার্তা পরিচালনা করতে ব্যবহৃত হয়।handlers: এটি লগ বার্তাগুলির জন্য বিভিন্ন হ্যান্ডলার এবং তাদের কনফিগারেশন নির্ধারণ করে।
লগিং লেভেল এবং হ্যান্ডলারস এর সুবিধা
- লগ ফাইলের সাইজ নিয়ন্ত্রণ:
RotatingFileHandler ব্যবহার করে আপনি ফাইলের আকার সীমিত করতে পারেন এবং পুরানো লগ ফাইলগুলি সংরক্ষণ করতে পারেন। - বিভিন্ন আউটপুট:
Monolog বিভিন্ন আউটপুট (ফাইল, Slack, ইমেইল, ইত্যাদি) সাপোর্ট করে, যা বিভিন্ন পরিস্থিতিতে দরকারি হতে পারে। - গ্রানুলার লগিং লেভেলস:
লগিং লেভেলস (DEBUG, ERROR, WARNING, ইত্যাদি) ব্যবহার করে আপনি কেবলমাত্র গুরুত্বপূর্ণ লগ বার্তা সংগ্রহ করতে পারেন, যা ডিবাগিং বা মনিটরিং এ সহায়ক। - সহজ কনফিগারেশন:
Symfony-তে Monolog কনফিগারেশন খুবই সহজ এবং YAML ফাইলে সহজেই কাস্টমাইজ করা যায়।
সারাংশ
Symfony-তে Monolog লগিং ব্যবস্থাপনা খুবই শক্তিশালী এবং নমনীয়, যা বিভিন্ন লগিং লেভেল, হ্যান্ডলার এবং আউটপুট মাধ্যম সাপোর্ট করে। লগিং লেভেল এবং হ্যান্ডলারস ব্যবহার করে আপনি লগ বার্তাগুলিকে সঠিকভাবে রেকর্ড করতে এবং মনিটর করতে পারবেন, যা অ্যাপ্লিকেশনের কার্যকারিতা ট্র্যাকিং এবং ত্রুটি সমাধানকে সহজ করে তোলে।