কম্পিউটার

ইভেন্ট এবং ত্রুটি বার্তাগুলি ট্র্যাক করতে রুবিতে লগগুলি কীভাবে ব্যবহার করবেন

লগিং হল আপনার রুবি অ্যাপ্লিকেশন কি করছে সে সম্পর্কে তথ্য সংরক্ষণ করার প্রক্রিয়া।

এটি উন্নয়ন এবং উৎপাদন পরিবেশ উভয় ক্ষেত্রেই খুবই সহায়ক।

কেন?

কারণ লগিংয়ের পুরো পয়েন্টটি কী ঘটেছে, কী ভুল হয়েছে এবং কী সঠিক হয়েছে সে সম্পর্কে তথ্য সংগ্রহ করা।

সব ধরনের তথ্য লগ করা যাবে :

  • Slow SQL কোয়েরি (যাতে আপনি সেগুলি খুঁজে পেতে এবং ঠিক করতে পারেন)
  • ত্রুটির বার্তা
  • বিস্তারিত অনুরোধের তথ্য (URL, কন্ট্রোলার, প্যারামস, ভিউ…)

এই তথ্যের সাহায্যে, আপনি দ্রুত আপনার অ্যাপ্লিকেশনে সমস্যার উৎস নির্ণয় ও খুঁজে পেতে পারেন।

একটি Rails অ্যাপে, লগগুলি /log-এর অধীনে সংরক্ষণ করা হয় ফোল্ডার।

বিকাশ মোডে, development.log ফাইল ব্যবহার করা হয় এবং আপনি যে টার্মিনালে rails server চালাচ্ছেন তাতে লগ আউটপুট দেখতে পান চালু।

এখন :

চলুন জেনে নিই কিভাবে আপনি Logger ব্যবহার করে রুবিতে লগ ইন করতে পারেন ক্লাস!

লগার ক্লাস

রুবি লগার ক্লাস আপনাকে একটি ডিফল্ট আউটপুট বিন্যাস এবং তীব্রতার বিভিন্ন স্তরের সাথে লগ তৈরি করার একটি উপায় দেয়৷

এখানে কিভাবে একটি লগ তৈরি করতে হয় :

logger = Logger.new("my_log.txt")

এটি my_log.txt এ লগিং বার্তা লিখবে .

আপনি যদি টার্মিনালে বার্তা প্রদর্শন করতে চান, যেখানে প্রোগ্রামটি চলছে, আপনি STDOUT এ লগ করতে পারেন .

এরকম :

logger = Logger.new(STDOUT)

লগিং বার্তাগুলির বিভিন্ন স্তর থাকতে পারে, সেগুলি কতটা সমালোচনামূলক তার উপর নির্ভর করে৷

স্তরগুলি হল৷ :

  • ডিবাগ
  • তথ্য
  • সতর্ক করুন
  • ত্রুটি
  • মারাত্মক
  • অজানা

প্রতিটি স্তরের একটি অনুরূপ উদাহরণ পদ্ধতি আছে৷

তাই আপনি যদি লগ করতে চান “তথ্য”।

এটি করুন৷ :

logger.info("I'm reading a RubyGuide about logging!")

প্রকৃত লগ এন্ট্রি দেখতে এরকমই হয় :

# I, [2019-08-08T19:22:00.152079 #642]  INFO -- : I'm reading a RubyGuide about logging!

এই বিভিন্ন স্তর থাকা আপনাকে আপনার লগ ফাইল ফিল্টার করতে সাহায্য করে, যাতে আপনি যা খুঁজছেন তা দ্রুত খুঁজে পেতে পারেন!

এটি আপনাকে সময়ের সাথে কতগুলি ত্রুটি এবং সতর্ক বার্তা তৈরি করে তা দেখতে সহায়তা করে৷

দারুণ জিনিস!

কিভাবে আপনার লগ ফরম্যাট করবেন

আপনার রুবি লগগুলির জন্য ডিফল্ট আউটপুট ফর্ম্যাট ব্যবহার করা দুর্দান্ত কারণ এটির চারপাশে সরঞ্জামগুলি তৈরি করা যেতে পারে এবং এটি কীভাবে কাজ করে তা আরও বেশি লোক বুঝতে পারে৷

এখানে আবার একটি লগ লাইন আছে :

# I, [2019-08-08T19:22:00.152079 #642]  INFO -- : test

এটির কয়েকটি উপাদান রয়েছে :

  • "আমি" তীব্রতা স্তরের প্রথম অক্ষর প্রতিনিধিত্ব করে
  • বন্ধনীর ভিতরে, আপনি টাইমস্ট্যাম্প এবং প্রসেস আইডি (PID) খুঁজে পান যে প্রক্রিয়াটি এই লগ বার্তাটি তৈরি করেছে
  • INFO হল তীব্রতা স্তরের পুরো নাম
  • কোলনের পরে, আমাদের কাছে প্রকৃত বার্তা আছে যা লগ করা হয়েছিল

কিন্তু এই বিন্যাসটি সবার জন্য আদর্শ নাও হতে পারে৷

তাই রুবি আপনাকে এটি পরিবর্তন করতে দেয়!

এখানে কিভাবে :

logger.formatter = proc { |severity, datetime, progname, msg| "#{severity}, #{datetime}, #{msg}\n" }

ফলে, আপনি এই আউটপুট পাবেন :

DEBUG, 2019-08-08 19:39:01 +0200, testing

আপনি অতিরিক্ত তথ্য যোগ করতে এটি ব্যবহার করতে পারেন যা আপনার এবং আপনার দলের জন্য সহায়ক হতে পারে৷

কিভাবে আপনার লগ সাইজ সীমিত করবেন

লগগুলি সত্যিই বড় ফাইল হয়ে উঠতে পারে যদি না আপনি তাদের আকারের উপর নজর রাখেন৷

লগের কারণে যদি আপনার ডিস্কের স্থান ফুরিয়ে যায়, তাহলে আপনার সিস্টেমে সব ধরনের অদ্ভুত জিনিস ঘটতে শুরু করে।

একটি সমাধান আছে!

আপনি আপনার লগের আকার সীমিত করতে পারেন।

এখানে কিভাবে :

MEGABYTE = 1024 ** 2
ONE_HUNDRED_MEGABYTES = MEGABYTE * 100

logger = Logger.new("my_log.txt", 1, ONE_HUNDRED_MEGABYTES)

লগ মেসেজ কোথায় সেভ করতে হয় তা হল ১ম প্যারামিটার।

2য় প্যারামিটার হল আপনি কতগুলি লগ ফাইল রাখতে চান (লগ ঘূর্ণন), এবং শেষ প্যারামিটারটি সর্বাধিক ফাইলের আকার৷

লগ রিডিং এবং ফিল্টারিং

ঠিক আছে, আপনি আপনার লগ পেয়েছেন৷

আপনি কীভাবে সেগুলি পড়বেন এবং আপনার যা প্রয়োজন তা খুঁজে পাবেন?

লগগুলি হল প্লেইন-টেক্সট ফাইল, তাই আপনি আপনার পছন্দের যেকোনো টেক্সট-প্রসেসিং টুল ব্যবহার করতে পারেন।

উদাহরণস্বরূপ :

গ্রেপ।

এটি একটি কমান্ড-লাইন টুল যা আপনি টেক্সট ফাইল ফিল্টার করতে ব্যবহার করতে পারেন।

এখানে কিভাবে :

grep INFO my_log.txt

এটি আপনাকে প্রতিটি লাইন দেয় যা "INFO" হিসাবে লগ করা হয়েছে৷

আপনি অন্য যেকোনো পাঠ্য অনুসন্ধান করতে পারেন grep ব্যবহার করে আপনার লগের ভিতরে , আপনি যা খুঁজছেন তা দিয়ে শুধু "INFO" প্রতিস্থাপন করুন৷

আরেকটি ইউনিক্স টুল যা আপনি ব্যবহার করতে পারেন তাকে less বলা হয় (-আর বিকল্প সহ)।

এটি আপনাকে শুধুমাত্র আপনার কীবোর্ড ব্যবহার করে লগগুলি স্ক্রোল করতে দেয় এবং এটির একটি অনুসন্ধান ফাংশন রয়েছে .

আপনিও ব্যবহার করতে পারেন...

লগ পরিচালনা এবং অনুসন্ধানের জন্য নির্দিষ্ট সরঞ্জাম।

ডিসকোর্সের লগস্টার মণির মতো।

সারাংশ

আপনি রুবিতে লগ ইন করার বিষয়ে শিখেছেন, এটি কী, এটি কীভাবে কাজ করে এবং কীভাবে এটি ব্যবহার করতে হয়।

এখন এটি চেষ্টা করার পালা আপনার।

পড়ার জন্য ধন্যবাদ!


  1. একটি ম্যাট্রিক্স কি এবং রুবিতে এটি কীভাবে ব্যবহার করবেন?

  2. রুবি আলিয়াস কীওয়ার্ড কীভাবে ব্যবহার করবেন

  3. রুবিতে স্ট্রাকট এবং ওপেনস্ট্রাক্ট কীভাবে ব্যবহার করবেন

  4. কীভাবে আপনার রুবি প্রোগ্রামগুলি ডিবাগ এবং ঠিক করবেন