Percursos
/
C#
C#
/
Exercícios
/
Registos, registos, registos!
Registos, registos, registos!

Registos, registos, registos!

Exercício de aprendizagem

Introdução

Enums

O tipo enum de C# representa um conjunto fixo de constantes nomeadas (uma enumeração). O seu principal objetivo é proporcionar uma forma segura em termos de tipos de interagir com constantes numéricas, limitando os valores disponíveis a um conjunto predefinido. Um enum simples pode ser definido da seguinte forma:

enum Season
{
    Spring,
    Summer,
    Autumn,
    Winter
}

Se não forem definidos explicitamente, os membros do enum recebem automaticamente valores inteiros incrementais, sendo o primeiro valor zero. Também é possível atribuir valores explicitamente:

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

Instruções

Neste exercício vais processar linhas de log.

Cada linha de log é uma string formatada da seguinte forma: "[<LVL>]: <MESSAGE>".

Estes são os diferentes níveis de log:

  • TRC (rastreio)
  • DBG (debug)
  • INF (informação)
  • WRN (aviso)
  • ERR (erro)
  • FTL (fatal)

Tens três tarefas.

1. Analisar o nível de log

Define um enum LogLevel com seis elementos correspondentes aos níveis de log acima.

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

De seguida, implementa o método (static) LogLine.ParseLogLevel() para analisar o nível de log de uma linha de log:

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

2. Suportar um nível de log desconhecido

Infelizmente, por vezes algumas linhas de log têm um nível de log desconhecido. Para lidar com estas linhas de log de forma elegante, adiciona um elemento Unknown ao enum LogLevel que deve ser devolvido ao analisar um nível de log desconhecido:

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

3. Converter uma linha de log para o formato curto

O nível de log de uma linha de log é bastante verboso. Para reduzir o espaço em disco necessário para armazenar as linhas de log, foi desenvolvido um formato curto: "[<ENCODED_LEVEL>]:<MESSAGE>".

O nível de log codificado é um mapeamento simples de um nível de log para um número:

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

Implementa o método (static) LogLine.OutputForShortLog() que consegue produzir o formato curto da linha de log:

LogLine.OutputForShortLog(LogLevel.Error, "Stack overflow")
// => "6:Stack overflow"
Editar via GitHub A ligação abre numa nova janela ou separador
C# Exercism

Estás pronto para começar Registos, registos, registos!?

Inscreve-te no Exercism para aprenderes e dominares C# com 62 conceitos178 exercícios, e mentoria humana real, tudo grátis.