Slice-Log-Filter-Herausforderung

GolangGolangBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In dieser Herausforderung werden Sie eine auf Slices basierende Log-Filterfunktion entwickeln, die Log-Nachrichten verarbeitet und relevante Nachrichten extrahiert. Effizientes Log-Filtern ist in der schnelllebigen Welt der Cybersicherheit von entscheidender Bedeutung, um potenzielle Sicherheitsbedrohungen zu identifizieren. Das Ziel besteht darin, die Funktion filterLogs zu implementieren, um Log-Nachrichten anhand eines gegebenen Schlüsselworts zu filtern. Dabei muss die Funktion Groß- und Kleinschreibung unterscheiden und leere Slices und Schlüsselwörter elegant behandeln. Darüber hinaus sollte die Funktion nur den Nachrichteninhalt zurückgeben und Zeitstempel oder andere Metadaten ausschließen.


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{{"Slice-Log-Filter-Herausforderung"}} go/slices -.-> lab-436686{{"Slice-Log-Filter-Herausforderung"}} go/for -.-> lab-436686{{"Slice-Log-Filter-Herausforderung"}} end

Implementierung der Slice-basierten Log-Filterfunktion

Entwickeln Sie eine auf Slices basierende Log-Filterfunktion, um nur den Log-Nachrichteninhalt (ohne Zeitstempel) für ein gegebenes Schlüsselwort zu verarbeiten und zu extrahieren.

Aufgaben

  • Implementieren Sie die Funktion filterLogs, die einen Slice von Log-Einträgen und ein Schlüsselwort als Parameter nimmt.
  • Die Funktion sollte einen neuen Slice zurückgeben, der nur den Nachrichteninhalt der Log-Einträge enthält, die das angegebene Schlüsselwort enthalten.
  • Stellen Sie sicher, dass die Funktion Groß- und Kleinschreibung unterscheidet.
  • Verwenden Sie Go-Slice-Operationen, um die Log-Einträge zu filtern und zu verarbeiten.
  • Behandeln Sie leere Slices und leere Schlüsselwörter elegant.

Anforderungen

  • Erstellen Sie die Implementierung in der Datei ~/project/logfilter.go.
  • Stellen Sie sicher, dass die Funktion den ursprünglichen Slice nicht ändert und einen neuen Slice mit den verarbeiteten Ergebnissen zurückgibt.
  • Verwenden Sie keine externen Bibliotheken zum Filtern.
  • Extrahieren und geben Sie nur den Nachrichteninhalt nach dem Schlüsselwort zurück (z. B. "Disk is almost full" anstelle von "2023-06-15 ERROR: Disk is almost full").
  • Verwenden Sie String-Manipulationsfunktionen, um die Logs zu verarbeiten.

Beispiele

Gegeben seien 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]

Tipps

  1. Iterieren Sie durch die Logs: Verwenden Sie eine for-Schleife, um jeden Log-Eintrag zu überprüfen.
  2. Finden Sie das Schlüsselwort: Suchen Sie nach dem Muster "<KEYWORD>: " im Log.
  3. Extrahieren Sie die Nachricht: Verwenden Sie Slicing, um den Teil nach dem Schlüsselwort und ": " zu erhalten.
  4. Behandeln Sie leere Eingaben: Geben Sie einen leeren Slice zurück, wenn die Logs oder das Schlüsselwort leer sind.
  5. Fügen Sie die Ergebnisse hinzu: Verwenden Sie append, um übereinstimmende Nachrichten einem neuen Slice hinzuzufügen.
✨ Lösung prüfen und üben

Zusammenfassung

Zusammenfassend erfordert diese Herausforderung, dass Sie eine Funktion filterLogs implementieren, die effizient relevante Log-Nachrichten (ohne Metadaten) aus einem Slice von Log-Strings anhand eines gegebenen Schlüsselworts verarbeitet und extrahiert. Die Funktion sollte Groß- und Kleinschreibung unterscheiden, leere Slices und Schlüsselwörter elegant behandeln und Ihre Kompetenz in der Verwendung von Go-Slice- und String-Manipulationsoperationen zum Filtern und Zurückgeben von verarbeiteten Log-Nachrichten demonstrieren.