Défi de filtrage de journaux basé sur des tranches

GolangGolangBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce défi, vous allez développer une fonction de filtrage de journaux (logs) basée sur des tranches (slices) qui traite et extrait les messages de journal pertinents. Un filtrage efficace des journaux est crucial dans le monde rapide de la cybersécurité pour identifier les menaces potentielles à la sécurité. L'objectif est de mettre en œuvre la fonction filterLogs pour filtrer les messages de journal en fonction d'un mot-clé donné, tout en s'assurant que la fonction est sensible à la casse et gère correctement les tranches vides et les mots-clés. De plus, la fonction devrait retourner uniquement le contenu du message, en excluant les horodatages (timestamps) ou autres métadonnées.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/FunctionsandControlFlowGroup(["Functions and Control Flow"]) go(("Golang")) -.-> go/DataTypesandStructuresGroup(["Data Types and Structures"]) go/DataTypesandStructuresGroup -.-> go/strings("Strings") go/DataTypesandStructuresGroup -.-> go/slices("Slices") go/FunctionsandControlFlowGroup -.-> go/for("For") subgraph Lab Skills go/strings -.-> lab-436686{{"Défi de filtrage de journaux basé sur des tranches"}} go/slices -.-> lab-436686{{"Défi de filtrage de journaux basé sur des tranches"}} go/for -.-> lab-436686{{"Défi de filtrage de journaux basé sur des tranches"}} end

Implémenter la fonction de filtrage de journaux basée sur des tranches

Développez une fonction de filtrage de journaux (logs) basée sur des tranches (slices) pour traiter et extraire uniquement le contenu du message de journal (en excluant les horodatages) pour un mot-clé donné.

Tâches

  • Implémentez la fonction filterLogs qui prend une tranche d'entrées de journal et un mot-clé.
  • La fonction devrait retourner une nouvelle tranche contenant uniquement le contenu du message des entrées de journal qui incluent le mot-clé spécifié.
  • Assurez-vous que la fonction est sensible à la casse.
  • Utilisez les opérations sur les tranches Go pour filtrer et traiter les entrées de journal.
  • Gérez correctement les tranches vides et les mots-clés vides.

Exigences

  • Créez l'implémentation dans le fichier ~/project/logfilter.go.
  • Assurez-vous que la fonction ne modifie pas la tranche originale et retourne une nouvelle tranche avec les résultats traités.
  • N'utilisez aucune bibliothèque externe pour le filtrage.
  • Extrait et retourne uniquement le contenu du message après le mot-clé (par exemple, "Disk is almost full" au lieu de "2023-06-15 ERROR: Disk is almost full").
  • Utilisez les fonctions de manipulation de chaînes pour traiter les journaux.

Exemples

Étant donné les 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 :

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]

Indices

  1. Itérer sur les journaux : Utilisez une boucle for pour vérifier chaque entrée de journal.
  2. Trouver le mot-clé : Recherchez le motif "<KEYWORD>: " dans le journal.
  3. Extraire le message : Utilisez le découpage (slicing) pour obtenir la partie après le mot-clé et ": ".
  4. Gérer les entrées vides : Retournez une tranche vide si les journaux ou le mot-clé sont vides.
  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 demande d'implémenter une fonction filterLogs qui traite efficacement et extrait les messages de journal pertinents (en excluant les métadonnées) à partir d'une tranche de chaînes de journal en fonction d'un mot-clé donné. La fonction doit être sensible à la casse, gérer correctement les tranches vides et les mots-clés vides, et démontrer une maîtrise de l'utilisation des opérations de manipulation de tranches et de chaînes en Go pour filtrer et retourner les messages de journal traités.