Track
/
C#
C#
/
Esercizi
/
Log, log, log!
Log, log, log!

Log, log, log!

Esercizio di apprendimento

Introduzione

Enum

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
}

Istruzioni

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à.

1. Analizza il livello di log

Definisci un enum LogLevel che ha sei elementi corrispondenti ai livelli di log sopra elencati.

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

Poi, implementa il metodo (static) LogLine.ParseLogLevel() per analizzare il livello di log di una riga di log:

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

2. Gestisci i livelli di log sconosciuti

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

3. Converti una riga di log in formato breve

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"
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
C# Exercism

Vuoi iniziare Log, log, log!?

Iscriviti a Exercism per imparare e padroneggiare C# con 62 concetti178 esercizi e il mentoring di persone reali, tutto gratis.