Треки
/
C#
C#
/
Вправи
/
Аналіз логів
Аналіз логів

Аналіз логів

Навчальна вправа

Вступ

Методи розширення

Методи розширення дозволяють додавати методи до наявних типів, не створюючи новий похідний тип, не перекомпільовуючи код і не змінюючи в інший спосіб початковий тип. Їх визначають як статичні методи, але викликають за допомогою синтаксису методів екземпляра. Перед їхнім першим параметром ставлять модифікатор this, який указує, з яким типом працює метод, а самі методи додаються до області видимості на рівні простору імен.

public static int WordCount(this string str)
{
    return str.Split().Length;
}

"Hello World".WordCount();
// => 2

Вказівки

У цій вправі ми обробляємо рядки логу.

Кожен рядок логу - це рядок тексту (англ. string) такого формату: "[<LEVEL>]: <MESSAGE>".

Є три різні рівні логу:

  • INFO
  • WARNING
  • ERROR

На нас чекає кілька завдань; кожне з них приймає рядок логу й просить щось із ним зробити.

1. Отримання рядка тексту після заданого підрядка

Переглядаючи логи за минулий місяць, ми бачимо, що тестове повідомлення завжди розташоване після певного підрядка. Оскільки ми передбачаємо, що незабаром нам доведеться витягувати тестове повідомлення, ми вирішуємо створити допоміжний метод, який нам у цьому допоможе.

Реалізуйте (static) метод розширення LogAnalysis.SubstringAfter(), який приймає певний рядок-роздільник і повертає підрядок після нього.

var log = "[INFO]: File Deleted.";
log.SubstringAfter(": "); // => returns "File Deleted."

2. Отримання рядка тексту між двома підрядками

При ближчому огляді ми бачимо, що рівень логу завжди розташований між квадратними дужками ([ and ]). Оскільки ми також передбачаємо, що незабаром нам доведеться витягувати рівень логу, ми вирішуємо створити ще один допоміжний метод, який нам у цьому допоможе.

Реалізуйте (static) метод розширення LogAnalysis.SubstringBetween(), який приймає два рядки-роздільники й повертає підрядок, що лежить між цими двома роздільниками.

var log = "[INFO]: File Deleted.";
log.SubstringBetween("[", "]"); // => returns "INFO"

3. Розбір повідомлення в рядку логу

Реалізуйте (static) метод розширення LogAnalysis.Message(), щоб повертати повідомлення, яке міститься в рядку логу.

var log = "[ERROR]: Missing ; on line 20.";
log.Message(); // => returns "Missing ; on line 20."

4. Розбір рівня логу в рядку логу

Реалізуйте (static) метод розширення LogAnalysis.LogLevel(), щоб повертати рівень логу з рядка логу.

var log = "[ERROR]: Missing ; on line 20.";
log.LogLevel(); // => returns "ERROR"
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
C# Exercism

Час розпочати Аналіз логів?

Зареєструйтеся на Exercism, щоб вивчати й опановувати C#, а також 62 концепції178 вправ та справжнє наставництво від людей, і все це безкоштовно.