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. Una enumeración simple se puede definir de la siguiente manera:
enum Season
{
Spring,
Summer,
Autumn,
Winter
}
Si no se definen explícitamente, los miembros de la enumeración recibirán automáticamente valores enteros consecutivos, 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 log.
Cada línea de log es un string con el siguiente formato: "[<LVL>]: <MESSAGE>".
Estos son los distintos niveles de log:
TRC (traza)DBG (depuración)INF (información)WRN (advertencia)ERR (error)FTL (fatal)Tienes tres tareas.
Define un enum LogLevel que tenga seis elementos correspondientes a los niveles de log anteriores.
TraceDebugInfoWarningErrorFatalLuego, implementa el método (static) LogLine.ParseLogLevel() para analizar el nivel de log de una línea de log:
LogLine.ParseLogLevel("[INF]: File deleted")
// => LogLevel.Info
Lamentablemente, de vez en cuando algunas líneas de log tienen un nivel de log desconocido. Para manejar estas líneas de log de forma elegante, agrega un elemento Unknown al enum LogLevel, que debe devolverse cuando se analice un nivel de log desconocido:
LogLine.ParseLogLevel("[XYZ]: Overly specific, out of context message")
// => LogLevel.Unknown
El nivel de log de una línea de log es bastante verboso. Para reducir el espacio en disco necesario para almacenar las líneas de log, se desarrolló un formato corto: "[<ENCODED_LEVEL>]:<MESSAGE>".
El nivel de log codificado es un mapeo simple de un nivel de log 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 pueda generar el formato de línea de log acortado:
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.