المسارات
/
C#
C#
/
التمارين
/
سجلات، سجلات، سجلات!
سجلات، سجلات، سجلات!

سجلات، سجلات، سجلات!

تمرين تعلّمي

مقدمة

التعدادات

يمثّل نوع enum في C# مجموعة ثابتة من الثوابت المُسمّاة (التعداد). وغرضه الرئيسي توفير طريقة آمنة نوعيًا للتعامل مع الثوابت العددية، بحيث تحصر القيم المتاحة في مجموعة محددة مسبقًا. ويمكن تعريف تعداد بسيط كما يلي:

enum Season
{
    Spring,
    Summer,
    Autumn,
    Winter
}

إذا لم تُعرَّف القيم صراحةً، فسيُسنَد إلى أعضاء التعداد تلقائيًا قيم عددية صحيحة متزايدة، وتكون القيمة الأولى هي الصفر. ويمكن أيضًا إسناد القيم صراحةً:

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

التعليمات

في هذا التمرين ستتعامل مع أسطر السجل.

كل سطر سجل هو سلسلة نصية مُنسّقة على النحو التالي: "[<LVL>]: <MESSAGE>".

هذه هي مستويات السجل المختلفة:

  • TRC (تتبع)
  • DBG (تصحيح)
  • INF (معلومات)
  • WRN (تحذير)
  • ERR (خطأ)
  • FTL (خطأ فادح)

لديك ثلاث مهام.

1. تحليل مستوى السجل

عرّف تعداد LogLevel يحتوي على ستة عناصر تقابل مستويات السجل المذكورة أعلاه.

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

بعد ذلك، نفّذ الطريقة (static) LogLine.ParseLogLevel() لتحليل مستوى السجل في سطر السجل:

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

2. دعم مستوى سجل غير معروف

لسوء الحظ، تحتوي بعض أسطر السجل أحيانًا على مستوى سجل غير معروف. للتعامل مع أسطر السجل هذه بسلاسة، أضف عنصرًا Unknown إلى تعداد LogLevel، ويجب إرجاعه عند تحليل مستوى سجل غير معروف:

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 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.