Défi de filtrage de journaux par tranches (Slices)

GolangBeginner
Pratiquer maintenant

Introduction

Dans ce défi, vous allez développer une fonction de filtrage de journaux (logs) basée sur les tranches (slices) afin de traiter et d'extraire les messages pertinents. Un filtrage efficace des journaux est crucial dans le monde effréné de la cybersécurité pour identifier les menaces potentielles. L'objectif est d'implémenter la fonction filterLogs pour filtrer les messages selon un mot-clé donné, tout en veillant à ce que la fonction respecte la casse et gère correctement les tranches ou les mots-clés vides. De plus, la fonction ne doit retourner que le contenu du message, en excluant les horodatages ou autres métadonnées.

Implémenter la fonction de filtrage de journaux

Développez une fonction de filtrage basée sur les tranches pour traiter et extraire uniquement le contenu du message (en excluant l'horodatage) pour un mot-clé spécifique.

Tâches

  • Implémenter la fonction filterLogs qui prend en entrée une tranche de chaînes de caractères (entrées de journal) et un mot-clé.
  • La fonction doit retourner une nouvelle tranche contenant uniquement le contenu du message des entrées qui incluent le mot-clé spécifié.
  • S'assurer que la fonction respecte la casse (sensible à la casse).
  • Utiliser les opérations sur les tranches Go pour filtrer et traiter les entrées.
  • Gérer proprement les cas de tranches vides ou de mots-clés vides.

Exigences

  • Réaliser l'implémentation dans le fichier ~/project/logfilter.go.
  • S'assurer que la fonction ne modifie pas la tranche d'origine et retourne une nouvelle tranche avec les résultats traités.
  • Ne pas utiliser de bibliothèques externes pour le filtrage.
  • Extraire et retourner uniquement le contenu du message situé après le mot-clé (par exemple, "Disk is almost full" au lieu de "2023-06-15 ERROR: Disk is almost full").
  • Utiliser les fonctions de manipulation de chaînes de caractères pour traiter les journaux.

Exemples

Compte tenu des entrées de journal suivantes :

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

Sortie attendue :

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]

Conseils

  1. Itérer sur les journaux : Utilisez une boucle for pour examiner chaque entrée.
  2. Trouver le mot-clé : Recherchez le motif "<KEYWORD>: " dans la ligne de journal.
  3. Extraire le message : Utilisez le découpage de chaînes (slicing) pour récupérer la partie située après le mot-clé et les caractères ": ".
  4. Gérer les entrées vides : Retournez une tranche vide si la liste de journaux ou le mot-clé est vide.
  5. Ajouter les résultats : Utilisez append pour ajouter les messages correspondants à une nouvelle tranche.
✨ Vérifier la solution et pratiquer

Résumé

En résumé, ce défi vous demandait d'implémenter une fonction filterLogs capable de traiter et d'extraire efficacement les messages de journaux pertinents (en excluant les métadonnées) à partir d'une tranche de chaînes de caractères, sur la base d'un mot-clé. La fonction doit respecter la casse, gérer les cas limites comme les entrées vides, et démontrer votre maîtrise des tranches Go et des opérations de manipulation de chaînes pour filtrer et retourner les messages traités.