Tracks
/
C#
C#
/
Übungen
/
Logs, Logs, Logs!
Logs, Logs, Logs!

Logs, Logs, Logs!

Lernübung

Einführung

Enums

Der enum-Typ in C# steht für eine feste Menge benannter Konstanten (eine Aufzählung). Sein Hauptzweck ist es, einen typsicheren Umgang mit numerischen Konstanten zu ermöglichen und die verfügbaren Werte auf eine vorab festgelegte Menge zu begrenzen. Ein einfaches Enum kannst du so definieren:

enum Season
{
    Spring,
    Summer,
    Autumn,
    Winter
}

Wenn du die Werte nicht explizit angibst, bekommen die Enum-Member automatisch aufsteigende Ganzzahlen zugewiesen, wobei der erste Wert null ist. Es ist auch möglich, die Werte explizit zuzuweisen:

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

Anleitung

In dieser Übung verarbeitest du Logzeilen.

Jede Logzeile ist ein String, der wie folgt formatiert ist: "[<LVL>]: <MESSAGE>".

Das sind die verschiedenen Log-Level:

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

Du hast drei Aufgaben.

1. Log-Level parsen

Definiere ein LogLevel-Enum mit sechs Elementen, die den oben genannten Log-Leveln entsprechen.

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

Implementiere als Nächstes die (statische) LogLine.ParseLogLevel()-Methode, um den Log-Level einer Logzeile zu parsen:

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

2. Unbekannte Log-Level unterstützen

Leider haben gelegentlich einige Logzeilen einen unbekannten Log-Level. Um solche Logzeilen sauber zu behandeln, füge dem LogLevel-Enum ein Unknown-Element hinzu, das beim Parsen eines unbekannten Log-Levels zurückgegeben werden soll:

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

3. Logzeile in das Kurzformat umwandeln

Der Log-Level einer Logzeile ist recht ausführlich. Um den Speicherplatz zu reduzieren, der zum Speichern der Logzeilen benötigt wird, wurde ein Kurzformat entwickelt: "[<ENCODED_LEVEL>]:<MESSAGE>".

Der kodierte Log-Level ist eine einfache Zuordnung eines Log-Levels zu einer Zahl:

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

Implementiere die (statische) LogLine.OutputForShortLog()-Methode, die eine Logzeile im Kurzformat ausgeben kann:

LogLine.OutputForShortLog(LogLevel.Error, "Stack overflow")
// => "6:Stack overflow"
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
C# Exercism

Bereit, mit Logs, Logs, Logs! zu starten?

Melde dich bei Exercism an, um C# mit 62 Konzepte178 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.