Trilhas
/
C#
C#
/
Exercícios
/
Logs, logs, logs!
Logs, logs, logs!

Logs, logs, logs!

Exercício de aprendizagem

Introdução

Enums

O tipo enum do C# representa um conjunto fixo de constantes nomeadas (uma enumeração). Seu principal objetivo é oferecer uma forma segura em termos de tipos para 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 deles zero. Também é possível atribuir valores explicitamente:

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

Instruções

Neste exercício, você vai 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 (rastreamento)
  • DBG (depuração)
  • INF (informação)
  • WRN (aviso)
  • ERR (erro)
  • FTL (fatal)

Você tem três tarefas.

1. Analisar o nível de log

Defina um enum LogLevel que tenha seis elementos correspondentes aos níveis de log acima.

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

Em seguida, implemente o método (estático) LogLine.ParseLogLevel() para analisar o nível de log de uma linha de log:

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

2. Lidar com nível de log desconhecido

Infelizmente, de vez em quando algumas linhas de log têm um nível de log desconhecido. Para lidar com essas linhas de log sem quebrar o programa, adicione um elemento Unknown ao enum LogLevel, que deve ser retornado ao analisar um nível de log desconhecido:

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

3. Converter a linha de log para o formato curto

O nível de log de uma linha de log é bastante extenso. Para reduzir o espaço em disco necessário para armazenar as linhas de log, foi criado 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

Implemente o método (estático) LogLine.OutputForShortLog() que consegue gerar o formato curto da linha de log:

LogLine.OutputForShortLog(LogLevel.Error, "Stack overflow")
// => "6:Stack overflow"
Editar via GitHub O link abre em uma nova janela ou aba
C# Exercism

Tudo pronto para começar Logs, logs, logs!?

Crie sua conta no Exercism para aprender e dominar C# com 62 conceitos178 exercícios e mentoria humana de verdade, tudo de graça.