مسیرها
/
C#
C#
/
تمرین‌ها
/
لاگ‌ها، لاگ‌ها، لاگ‌ها!
لاگ‌ها، لاگ‌ها، لاگ‌ها!

لاگ‌ها، لاگ‌ها، لاگ‌ها!

تمرین یادگیری

مقدمه

شمارشی

نوع enum در زبان C# مجموعه‌ای ثابت از ثابت‌های نامدار را نمایش می‌دهد (یک «شمارشی»). هدف اصلی آن فراهم کردن راهی ایمن از نظر نوع برای تعامل با ثابت‌های عددی است و مقادیر در دسترس را به مجموعه‌ای از پیش تعریف‌شده محدود می‌کند. یک شمارشی ساده را می‌توان به شکل زیر تعریف کرد:

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. تجزیه‌ی سطح لاگ

یک enum به اسم LogLevel تعریف کنید که شش عضو متناظر با سطوح لاگ بالا دارد.

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

در ادامه، متد (static) LogLine.ParseLogLevel() را پیاده‌سازی کنید تا سطح لاگ یک خط لاگ را تجزیه کند:

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

2. پشتیبانی از سطح لاگ ناشناخته

متأسفانه گاهی برخی خطوط لاگ سطح لاگ ناشناخته دارند. برای اینکه این خطوط لاگ را به‌خوبی مدیریت کنید، به enum 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 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.