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
}
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.
Définis une énumération LogLevel comportant six éléments correspondant aux niveaux de journalisation ci-dessus.
TraceDebugInfoWarningErrorFatalEnsuite, 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
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
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"
Inscris-toi sur Exercism pour apprendre et maîtriser C# avec 62 concepts178 exercices, et un vrai mentorat humain, le tout gratuitement.