El tipo enum de C# representa un conjunto fijo de constantes con nombre (una enumeración). Su propósito principal es proporcionar una forma segura en cuanto a tipos de interactuar con constantes numéricas, limitando los valores disponibles a un conjunto predefinido. Un enum sencillo se puede definir de la siguiente manera:
enum Season
{
Spring,
Summer,
Autumn,
Winter
}
Si no se definen explícitamente, los miembros del enum recibirán automáticamente valores enteros incrementales, siendo el primero cero. También es posible asignar valores explícitamente:
enum Answer
{
Maybe = 1,
Yes = 3,
No = 5
}
En este ejercicio vas a procesar líneas de registro.
Cada línea de registro es un string con el siguiente formato: "[<LVL>]: <MESSAGE>".
Estos son los distintos niveles de registro:
TRC (trace)DBG (debug)INF (info)WRN (warning)ERR (error)FTL (fatal)Tienes tres tareas.
Define un enum LogLevel que tenga seis elementos correspondientes a los niveles de registro anteriores.
TraceDebugInfoWarningErrorFatalA continuación, implementa el método (static) LogLine.ParseLogLevel() para analizar el nivel de registro de una línea de registro:
LogLine.ParseLogLevel("[INF]: File deleted")
// => LogLevel.Info
Lamentablemente, en ocasiones algunas líneas de registro tienen un nivel de registro desconocido. Para gestionar estas líneas de registro con elegancia, añade un elemento Unknown al enum LogLevel, que debe devolverse al analizar un nivel de registro desconocido:
LogLine.ParseLogLevel("[XYZ]: Overly specific, out of context message")
// => LogLevel.Unknown
El nivel de registro de una línea de registro es bastante verboso. Para reducir el espacio en disco necesario para almacenar las líneas de registro, se ha desarrollado un formato corto: "[<ENCODED_LEVEL>]:<MESSAGE>".
El nivel de registro codificado es una asignación simple de un nivel de registro a un número:
Unknown - 0
Trace - 1
Debug - 2
Info - 4
Warning - 5
Error - 6
Fatal - 42
Implementa el método (static) LogLine.OutputForShortLog() que puede generar el formato corto de la línea de registro:
LogLine.OutputForShortLog(LogLevel.Error, "Stack overflow")
// => "6:Stack overflow"
Regístrate en Exercism para aprender y dominar C# con 62 conceptos178 ejercicios y mentoría humana real, todo gratis.