Percursos
/
C#
C#
/
Exercícios
/
Análise de registos
Análise de registos

Análise de registos

Exercício de aprendizagem

Introdução

Métodos de extensão

Os métodos de extensão permitem adicionar métodos a tipos já existentes sem criar um novo tipo derivado, sem recompilar e sem modificar de outra forma o tipo original. São definidos como métodos estáticos, mas são chamados com a sintaxe de um método de instância. O primeiro parâmetro é precedido do modificador this e especifica o tipo sobre o qual o método opera. Os métodos de extensão são trazidos para o âmbito ao nível do espaço de nomes.

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

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

Instruções

Neste exercício vais processar linhas de log.

Cada linha de log é uma string com o seguinte formato: "[<LEVEL>]: <MESSAGE>".

Existem três níveis de log diferentes:

  • INFO
  • WARNING
  • ERROR

Tens várias tarefas, cada uma das quais recebe uma linha de log e pede-te que faças algo com ela.

1. Permitir obter a string a seguir a um substring específico

Ao olhares para os logs do último mês, vês que a mensagem de teste está sempre localizada a seguir a um substring específico. Como prevês ter de extrair a mensagem de teste num futuro próximo, decides criar um método auxiliar para te ajudar nisso.

Implementa o método de extensão (static) LogAnalysis.SubstringAfter(), que recebe um delimitador do tipo string e devolve o substring a seguir ao delimitador.

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

2. Permitir obter a string entre dois substrings

Numa inspeção mais atenta, vês que o nível de log está sempre entre parênteses retos ([ e ]). Como também prevês ter de extrair o nível de log num futuro próximo, decides criar outro método auxiliar para te ajudar nisso.

Implementa o método de extensão (static) LogAnalysis.SubstringBetween(), que recebe dois delimitadores do tipo string e devolve o substring que está entre os dois delimitadores.

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

3. Extrair a mensagem de um log

Implementa o método de extensão (static) LogAnalysis.Message() para devolver a mensagem contida num log.

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

4. Extrair o nível de log de um log

Implementa o método de extensão (static) LogAnalysis.LogLevel() para devolver o nível de log de um log.

var log = "[ERROR]: Missing ; on line 20.";
log.LogLevel(); // => returns "ERROR"
Editar via GitHub A ligação abre numa nova janela ou separador
C# Exercism

Estás pronto para começar Análise de registos?

Inscreve-te no Exercism para aprenderes e dominares C# com 62 conceitos178 exercícios, e mentoria humana real, tudo grátis.