লগ, লগ, লগ!

লগ, লগ, লগ!

লার্নিং অনুশীলনী

ভূমিকা

ইনাম

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

enum Season
{
    Spring,
    Summer,
    Autumn,
    Winter
}

স্পষ্টভাবে ডিফাইন করা না হলে, ইনামের সদস্যগুলো স্বয়ংক্রিয়ভাবে ক্রমবর্ধমান ইন্টিজার মান পায়, যেখানে প্রথম মানটি শূন্য। চাইলে স্পষ্টভাবেও মান অ্যাসাইন করা যায়:

enum Answer
{
    Maybe = 1,
    Yes = 3,
    No = 5
}

নির্দেশনা

এই অনুশীলনীতে আপনি লগ লাইন প্রসেস করবেন।

প্রতিটি লগ লাইন একটি স্ট্রিং, যার বিন্যাস নিচের মতো: "[<LVL>]: <MESSAGE>"।

লগ লেভেলগুলো হলো:

  • TRC (trace)
  • DBG (debug)
  • INF (info)
  • WRN (warning)
  • ERR (error)
  • FTL (fatal)

আপনার তিনটি কাজ আছে।

1. লগ লেভেল পার্স করা

উপরের লগ লেভেলগুলোর সাথে মিলে যায় এমন ছয়টি এলিমেন্টযুক্ত একটি LogLevel এনাম ডিফাইন করুন।

  • Trace
  • Debug
  • Info
  • Warning
  • Error
  • Fatal

এরপর, একটি লগ লাইনের লগ লেভেল পার্স করতে (static) LogLine.ParseLogLevel() মেথডটি ইমপ্লিমেন্ট করুন:

LogLine.ParseLogLevel("[INF]: File deleted")
// => LogLevel.Info

2. অজানা লগ লেভেল সাপোর্ট করা

দুর্ভাগ্যবশত, মাঝেমধ্যে কিছু লগ লাইনে অজানা লগ লেভেল থাকে। এই লগ লাইনগুলো সুন্দরভাবে হ্যান্ডেল করতে, LogLevel এনামে একটি Unknown এলিমেন্ট যোগ করুন, যা অজানা লগ লেভেল পার্স করার সময় রিটার্ন করা উচিত:

LogLine.ParseLogLevel("[XYZ]: Overly specific, out of context message")
// => LogLevel.Unknown

3. লগ লাইনকে শর্ট ফরম্যাটে রূপান্তর করা

একটি লগ লাইনে লগ লেভেল লেখা বেশ লম্বা হয়ে যায়। লগ লাইনগুলো সংরক্ষণ করতে যে ডিস্ক স্পেস লাগে তা কমাতে একটি শর্ট ফরম্যাট তৈরি করা হয়েছে: "[<ENCODED_LEVEL>]:<MESSAGE>"।

এনকোড করা লগ লেভেল হলো লগ লেভেল থেকে একটি সংখ্যায় সরল ম্যাপিং:

  • Unknown - 0
  • Trace - 1
  • Debug - 2
  • Info - 4
  • Warning - 5
  • Error - 6
  • Fatal - 42

সংক্ষিপ্ত লগ লাইন ফরম্যাট আউটপুট দিতে পারে এমন (static) LogLine.OutputForShortLog() মেথডটি ইমপ্লিমেন্ট করুন:

LogLine.OutputForShortLog(LogLevel.Error, "Stack overflow")
// => "6:Stack overflow"
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
C# Exercism

লগ, লগ, লগ! শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, C# ট্র্যাকের 62টি কনসেপ্ট178টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।