Track
/
C#
C#
/
Esercizi
/
Analisi dei log
Analisi dei log

Analisi dei log

Esercizio di apprendimento

Introduzione

Metodi di estensione

I metodi di estensione consentono di aggiungere metodi ai tipi esistenti senza creare un nuovo tipo derivato, ricompilare o modificare in altro modo il tipo originale. Sono definiti come metodi statici, ma vengono chiamati usando la sintassi dei metodi di istanza. Il loro primo parametro è preceduto dal modificatore this e specifica su quale tipo opera il metodo; i metodi di estensione vengono portati nello scope a livello di namespace.

public static int WordCount(this string str)
{
    return str.Split().Length;
}

"Hello World".WordCount();
// => 2

Istruzioni

In questo esercizio elaborerai delle righe di log.

Ogni riga di log è una stringa formattata così: "[<LEVEL>]: <MESSAGE>".

Ci sono tre diversi livelli di log:

  • INFO
  • WARNING
  • ERROR

Hai diversi compiti, ognuno dei quali riceverà una riga di log e ti chiederà di fare qualcosa con essa.

1. Recuperare la stringa che segue una sottostringa specifica

Guardando i log dell'ultimo mese, vedi che il messaggio di test si trova sempre dopo una sottostringa specifica. Dato che prevedi di dover estrarre il messaggio di test nel prossimo futuro, decidi di creare un metodo ausiliario che ti aiuti a farlo.

Implementa il metodo di estensione (static) LogAnalysis.SubstringAfter(), che riceve un delimitatore di tipo stringa e restituisce la sottostringa che segue il delimitatore.

var log = "[INFO]: File Deleted.";
log.SubstringAfter(": "); // => returns "File Deleted."

2. Recuperare la stringa compresa tra due sottostringhe

Guardando più attentamente, vedi che il livello di log si trova sempre tra parentesi quadre ([ e ]). Dato che anche in questo caso prevedi di dover estrarre il livello di log nel prossimo futuro, decidi di creare un altro metodo ausiliario per questo.

Implementa il metodo di estensione (static) LogAnalysis.SubstringBetween() che riceve due delimitatori di tipo stringa e restituisce la sottostringa compresa tra i due delimitatori.

var log = "[INFO]: File Deleted.";
log.SubstringBetween("[", "]"); // => returns "INFO"

3. Estrarre il messaggio da un log

Implementa il metodo di estensione (static) LogAnalysis.Message() per restituire il messaggio contenuto in un log.

var log = "[ERROR]: Missing ; on line 20.";
log.Message(); // => returns "Missing ; on line 20."

4. Estrarre il livello di log da un log

Implementa il metodo di estensione (static) LogAnalysis.LogLevel() per restituire il livello di log di un log.

var log = "[ERROR]: Missing ; on line 20.";
log.LogLevel(); // => returns "ERROR"
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
C# Exercism

Vuoi iniziare Analisi dei log?

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