Il tipo enum di C# rappresenta un insieme fisso di costanti denominate (un'enumerazione). Il suo scopo principale è fornire un modo sicuro rispetto ai tipi di interagire con costanti numeriche, limitando i valori disponibili a un insieme predefinito. Un enum semplice si può definire nel modo seguente:
enum Season
{
Spring,
Summer,
Autumn,
Winter
}
Se non vengono definiti esplicitamente, ai membri dell'enum vengono assegnati automaticamente valori interi incrementali, con il primo valore uguale a zero. È anche possibile assegnare i valori esplicitamente:
enum Answer
{
Maybe = 1,
Yes = 3,
No = 5
}
In questo esercizio elaborerai delle righe di log.
Ogni riga di log è una stringa formattata così: "[<LVL>]: <MESSAGE>".
Questi sono i diversi livelli di log:
TRC (trace)DBG (debug)INF (info)WRN (warning)ERR (error)FTL (fatal)Hai tre attività.
Definisci un enum LogLevel che ha sei elementi corrispondenti ai livelli di log sopra elencati.
TraceDebugInfoWarningErrorFatalPoi, implementa il metodo (static) LogLine.ParseLogLevel() per analizzare il livello di log di una riga di log:
LogLine.ParseLogLevel("[INF]: File deleted")
// => LogLevel.Info
Purtroppo, a volte alcune righe di log hanno un livello di log sconosciuto. Per gestire in modo controllato queste righe di log, aggiungi un elemento Unknown all'enum LogLevel, che deve essere restituito quando si analizza un livello di log sconosciuto:
LogLine.ParseLogLevel("[XYZ]: Overly specific, out of context message")
// => LogLevel.Unknown
Il livello di log di una riga di log è piuttosto verboso. Per ridurre lo spazio su disco necessario per memorizzare le righe di log, è stato sviluppato un formato breve: "[<ENCODED_LEVEL>]:<MESSAGE>".
Il livello di log codificato è una semplice mappatura da un livello di log a un numero:
Unknown - 0
Trace - 1
Debug - 2
Info - 4
Warning - 5
Error - 6
Fatal - 42
Implementa il metodo (static) LogLine.OutputForShortLog() che può restituire la riga di log in formato breve:
LogLine.OutputForShortLog(LogLevel.Error, "Stack overflow")
// => "6:Stack overflow"
Iscriviti a Exercism per imparare e padroneggiare C# con 62 concetti178 esercizi e il mentoring di persone reali, tutto gratis.