Herausforderung: Log-Filter für Slices

GolangBeginner
Jetzt üben

Einführung

In dieser Herausforderung entwickeln Sie eine Slice-basierte Log-Filterfunktion, die relevante Protokollnachrichten verarbeitet und extrahiert. Eine effiziente Filterung von Protokollen ist in der schnelllebigen Welt der Cybersicherheit entscheidend, um potenzielle Sicherheitsbedrohungen frühzeitig zu erkennen. Ziel ist es, die Funktion filterLogs zu implementieren, die Log-Einträge basierend auf einem bestimmten Schlüsselwort filtert. Dabei muss die Funktion die Groß- und Kleinschreibung berücksichtigen sowie leere Slices und Schlüsselwörter korrekt verarbeiten. Zudem soll die Funktion nur den eigentlichen Nachrichteninhalt zurückgeben und Zeitstempel oder andere Metadaten ausschließen.

Log-Filterfunktion für Slices implementieren

Entwickeln Sie eine Slice-basierte Filterfunktion, die Log-Einträge verarbeitet und ausschließlich den Nachrichteninhalt (ohne Zeitstempel) für ein bestimmtes Schlüsselwort extrahiert.

Aufgaben

  • Implementieren Sie die Funktion filterLogs, die ein Slice mit Log-Einträgen und ein Schlüsselwort entgegennimmt.
  • Die Funktion soll ein neues Slice zurückgeben, das nur den Nachrichteninhalt der Einträge enthält, in denen das angegebene Schlüsselwort vorkommt.
  • Stellen Sie sicher, dass die Funktion zwischen Groß- und Kleinschreibung unterscheidet (Case-Sensitive).
  • Verwenden Sie Go-Slice-Operationen, um die Log-Einträge zu filtern und zu verarbeiten.
  • Behandeln Sie leere Slices und leere Schlüsselwörter auf eine saubere Weise.

Anforderungen

  • Erstellen Sie die Implementierung in der Datei ~/project/logfilter.go.
  • Die Funktion darf das ursprüngliche Slice nicht verändern und muss ein neues Slice mit den Ergebnissen zurückgeben.
  • Verwenden Sie keine externen Bibliotheken für die Filterung.
  • Extrahieren und liefern Sie nur den Nachrichtenteil nach dem Schlüsselwort zurück (z. B. "Disk is almost full" anstelle von "2023-06-15 ERROR: Disk is almost full").
  • Nutzen Sie Funktionen zur String-Manipulation, um die Protokolle zu verarbeiten.

Beispiele

Gegeben sind die folgenden Log-Einträge:

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

Ausgabe:

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]

Hinweise

  1. Logs durchlaufen: Verwenden Sie eine for-Schleife, um jeden Log-Eintrag zu prüfen.
  2. Schlüsselwort finden: Suchen Sie im Log nach dem Muster "<KEYWORD>: ".
  3. Nachricht extrahieren: Nutzen Sie Slicing-Techniken, um den Teil nach dem Schlüsselwort und dem Trenner ": " zu isolieren.
  4. Leere Eingaben behandeln: Geben Sie ein leeres Slice zurück, wenn die Logs oder das Schlüsselwort leer sind.
  5. Ergebnisse hinzufügen: Verwenden Sie append, um gefundene Nachrichten dem neuen Slice hinzuzufügen.
✨ Lösung prüfen und üben

Zusammenfassung

Zusammenfassend lässt sich sagen, dass diese Herausforderung von Ihnen verlangt, eine Funktion filterLogs zu implementieren, die effizient relevante Protokollnachrichten (ohne Metadaten) aus einem Slice von Log-Strings basierend auf einem Schlüsselwort extrahiert. Die Funktion muss die Groß- und Kleinschreibung beachten, leere Eingaben korrekt handhaben und Ihre Kompetenz im Umgang mit Go-Slices und String-Manipulationen unter Beweis stellen.