Desafio de Filtro de Logs com Slice

GolangGolangBeginner
Pratique Agora

💡 Este tutorial foi traduzido do inglês com assistência de IA. Para ver o original, você pode mudar para a versão em inglês

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 mundo acelerado da segurança cibernética para identificar potenciais ameaças à segurança. O objetivo é implementar a função filterLogs para filtrar mensagens de log com base em uma palavra-chave fornecida, garantindo que a função seja case-sensitive (sensível a maiúsculas e minúsculas) e lide com slices e palavras-chave vazias de forma adequada. Adicionalmente, a função deve retornar apenas o conteúdo da mensagem, excluindo timestamps (carimbos de tempo) ou outros metadados.

Este é um desafio, que difere de um Lab guiado em que você precisa completar o desafio de forma independente, em vez de seguir os passos de um Lab para aprender.Desafios geralmente têm um pouco de dificuldade. Se você encontrar isso difícil, pode discutir com Labby ou verificar a solução.

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/DataTypesandStructuresGroup(["Data Types and Structures"]) go(("Golang")) -.-> go/FunctionsandControlFlowGroup(["Functions and Control Flow"]) go/DataTypesandStructuresGroup -.-> go/strings("Strings") go/DataTypesandStructuresGroup -.-> go/slices("Slices") go/FunctionsandControlFlowGroup -.-> go/for("For") subgraph Lab Skills go/strings -.-> lab-436686{{"Desafio de Filtro de Logs com Slice"}} go/slices -.-> lab-436686{{"Desafio de Filtro de Logs com Slice"}} go/for -.-> lab-436686{{"Desafio de Filtro de Logs com Slice"}} end

Implementar Função de Filtro de Logs com Slice

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 incluem a palavra-chave especificada.
  • Certifique-se de que a função seja case-sensitive (sensível a maiúsculas e minúsculas).
  • Use operações de slice do Go para filtrar e processar as entradas de log.
  • Lidar com slices vazios e palavras-chave vazias de forma adequada.

Requisitos

  • Crie a implementação no arquivo ~/project/logfilter.go.
  • Certifique-se de que a função não modifique o slice original e retorne um novo slice com os resultados processados.
  • Não use nenhuma biblioteca externa para 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").
  • Use funções de manipulação de strings para processar os logs.

Exemplos

Dados 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 loop for para verificar cada entrada de log.
  2. Encontrar Palavra-chave: Procure o padrão "<KEYWORD>: " no log.
  3. Extrair Mensagem: Use slicing para obter a parte após a palavra-chave e ": ".
  4. Lidar com Entradas Vazias: Retorne um slice vazio se os logs ou a palavra-chave estiverem vazios.
  5. Anexar Resultados: Use append para adicionar mensagens correspondentes a um novo slice.
✨ Verificar Solução e Praticar

Resumo

Em resumo, este desafio exige que você implemente uma função filterLogs que processe e extraia eficientemente mensagens de log relevantes (excluindo metadados) de um slice de strings de log com base em uma palavra-chave fornecida. A função deve ser case-sensitive (sensível a maiúsculas e minúsculas), lidar com slices e palavras-chave vazias de forma adequada e demonstrar proficiência no uso de operações de slice e manipulação de strings do Go para filtrar e retornar mensagens de log processadas.

OSZAR »