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
}
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.
Define um enum LogLevel com seis elementos correspondentes aos níveis de log acima.
TraceDebugInfoWarningErrorFatalDe 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
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
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"
Inscreve-te no Exercism para aprenderes e dominares C# com 62 conceitos178 exercícios, e mentoria humana real, tudo grátis.