Parcours
/
C#
C#
/
Exercices
/
Des logs, des logs, des logs !
Des logs, des logs, des logs !

Des logs, des logs, des logs !

Exercice d'apprentissage

Introduction

Énumérations

Le type enum de C# représente un ensemble fixe de constantes nommées (une énumération). Son but principal est de fournir un moyen sûr au niveau des types pour interagir avec des constantes numériques, en limitant les valeurs disponibles à un ensemble prédéfini. On peut définir une énumération simple comme suit :

enum Season
{
    Spring,
    Summer,
    Autumn,
    Winter
}

S'ils ne sont pas définis explicitement, les membres de l'énumération se voient automatiquement attribuer des valeurs entières successives, la première valant zéro. Il est également possible d'attribuer des valeurs explicitement :

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

Instructions

Dans cet exercice, on va traiter des lignes de journal.

Chaque ligne de journal est une string au format suivant : "[<LVL>]: <MESSAGE>".

Voici les différents niveaux de journalisation :

  • TRC (trace)
  • DBG (débogage)
  • INF (info)
  • WRN (avertissement)
  • ERR (erreur)
  • FTL (fatal)

Tu as trois tâches.

1. Analyse le niveau de journalisation

Définis une énumération LogLevel comportant six éléments correspondant aux niveaux de journalisation ci-dessus.

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

Ensuite, implémente la méthode (statique) LogLine.ParseLogLevel() pour analyser le niveau de journalisation d'une ligne de journal :

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

2. Prends en charge un niveau de journalisation inconnu

Malheureusement, il arrive parfois que certaines lignes de journal aient un niveau de journalisation inconnu. Pour gérer ces lignes de journal avec élégance, ajoute un élément Unknown à l'énumération LogLevel, qui doit être renvoyé lors de l'analyse d'un niveau de journalisation inconnu :

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

3. Convertis une ligne de journal au format court

Le niveau de journalisation d'une ligne de journal est assez verbeux. Pour réduire l'espace disque nécessaire au stockage des lignes de journal, un format court a été développé : "[<ENCODED_LEVEL>]:<MESSAGE>".

Le niveau de journalisation encodé est une simple correspondance entre un niveau de journalisation et un nombre :

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

Implémente la méthode (statique) LogLine.OutputForShortLog() qui peut produire le format de ligne de journal raccourci :

LogLine.OutputForShortLog(LogLevel.Error, "Stack overflow")
// => "6:Stack overflow"
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
C# Exercism

Prêt à commencer Des logs, des logs, des logs ! ?

Inscris-toi sur Exercism pour apprendre et maîtriser C# avec 62 concepts178 exercices, et un vrai mentorat humain, le tout gratuitement.