Desafio de Filtro de Logs com Slices

GolangBeginner
Pratique Agora

Introdução

Neste desafio, você desenvolverá uma função de filtragem de logs baseada em slices que processa e extrai mensagens de log relevantes. A filtragem eficiente de logs é crucial no dinâmico mundo da cibersegurança para identificar potenciais ameaças. O objetivo é implementar a função filterLogs para filtrar mensagens de log com base em uma palavra-chave específica, garantindo que a função seja sensível a maiúsculas e minúsculas (case-sensitive) e trate slices ou palavras-chave vazias de forma adequada. Além disso, a função deve retornar apenas o conteúdo da mensagem, excluindo carimbos de data/hora (timestamps) ou outros metadados.

Implementar Função de Filtro de Logs com Slices

Desenvolva uma função de filtragem de logs baseada em slices para processar e extrair apenas o conteúdo da mensagem de log (excluindo timestamps) para uma determinada palavra-chave.

Tarefas

  • Implementar a função filterLogs que recebe um slice de entradas de log e uma palavra-chave.
  • A função deve retornar um novo slice contendo apenas o conteúdo da mensagem das entradas de log que incluírem a palavra-chave especificada.
  • Garantir que a função seja sensível a maiúsculas e minúsculas (case-sensitive).
  • Utilizar operações de slice do Go para filtrar e processar as entradas de log.
  • Tratar slices vazios e palavras-chave vazias adequadamente.

Requisitos

  • Crie a implementação no arquivo ~/project/logfilter.go.
  • Garanta que a função não modifique o slice original e retorne um novo slice com os resultados processados.
  • Não utilize bibliotecas externas para a filtragem.
  • Extraia e retorne apenas o conteúdo da mensagem após a palavra-chave (por exemplo, "Disk is almost full" em vez de "2023-06-15 ERROR: Disk is almost full").
  • Utilize funções de manipulação de strings para processar os logs.

Exemplos

Dadas as seguintes entradas de log:

logs := []string{
    "2023-06-15 ERROR: Security breach detected",
    "2023-06-15 INFO: System startup completed",
    "2023-06-15 WARN: Unauthorized access attempt",
    "2023-06-15 ERROR: Disk is almost full",
    "2023-06-15 INFO: User login",
    "2023-06-15 WARN: System temperature too high",
}
go run logfilter.go

Saída:

Error Logs: [Security breach detected Disk is almost full]
Warning Logs: [Unauthorized access attempt System temperature too high]
Info Logs: [System startup completed User login]

Dicas

  1. Iterar Logs: Use um laço for para verificar cada entrada de log.
  2. Localizar Palavra-chave: Procure pelo padrão "<KEYWORD>: " no log.
  3. Extrair Mensagem: Use fatiamento (slicing) para obter a parte após a palavra-chave e os caracteres ": ".
  4. Tratar Entradas Vazias: Retorne um slice vazio se os logs ou a palavra-chave estiverem vazios.
  5. Adicionar Resultados: Use append para adicionar as mensagens correspondentes a um novo slice.
✨ Verificar Solução e Praticar

Resumo

Em resumo, este desafio exigiu a implementação de uma função filterLogs que processa e extrai eficientemente mensagens de log relevantes (excluindo metadados) de um slice de strings de log com base em uma palavra-chave. A função deve ser sensível a maiúsculas e minúsculas, tratar slices e palavras-chave vazias corretamente, e demonstrar proficiência no uso de operações de slice e manipulação de strings em Go para filtrar e retornar mensagens de log processadas.