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
}
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.
Defina um enum LogLevel que tenha seis elementos correspondentes aos níveis de log acima.
TraceDebugInfoWarningErrorFatalEm 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
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
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"
Crie sua conta no Exercism para aprender e dominar C# com 62 conceitos178 exercícios e mentoria humana de verdade, tudo de graça.