Tracks
/
C#
C#
/
Ejercicios
/
¡Registros, registros, registros!
¡Registros, registros, registros!

¡Registros, registros, registros!

Ejercicio de aprendizaje

Introducción

Enumeraciones

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
}

Instrucciones

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.

1. Analiza el nivel de log

Define un enum LogLevel que tenga seis elementos correspondientes a los niveles de log anteriores.

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

Luego, 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

2. Admite un nivel de log desconocido

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

3. Convierte una línea de log al formato corto

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"
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
C# Exercism

¿Todo listo para empezar ¡Registros, registros, registros!?

Regístrate en Exercism para aprender y dominar C# con 62 conceptos178 ejercicios y mentoría humana real, todo gratis.