Desafío de filtrado de registros (logs) basado en slices

GolangGolangBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este desafío, desarrollarás una función de filtrado de registros (logs) basada en slices que procese y extraiga los mensajes de registro relevantes. El filtrado eficiente de registros es crucial en el mundo acelerado de la ciberseguridad para identificar posibles amenazas de seguridad. El objetivo es implementar la función filterLogs para filtrar los mensajes de registro en función de una palabra clave dada, asegurando al mismo tiempo que la función distinga entre mayúsculas y minúsculas y maneje adecuadamente las slices vacías y las palabras clave. Además, la función debe devolver solo el contenido del mensaje, excluyendo marcas de tiempo u otros metadatos.


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{{"Desafío de filtrado de registros (logs) basado en slices"}} go/slices -.-> lab-436686{{"Desafío de filtrado de registros (logs) basado en slices"}} go/for -.-> lab-436686{{"Desafío de filtrado de registros (logs) basado en slices"}} end

Implementar la función de filtrado de registros (logs) basada en slices

Desarrolla una función de filtrado de registros (logs) basada en slices para procesar y extraer solo el contenido del mensaje de registro (excluyendo marcas de tiempo) para una palabra clave dada.

Tareas

  • Implementa la función filterLogs que tome una slice de entradas de registro y una palabra clave.
  • La función debe devolver una nueva slice que contenga solo el contenido del mensaje de las entradas de registro que incluyan la palabra clave especificada.
  • Asegúrate de que la función distinga entre mayúsculas y minúsculas.
  • Utiliza operaciones de slices de Go para filtrar y procesar las entradas de registro.
  • Maneja adecuadamente las slices vacías y las palabras clave vacías.

Requisitos

  • Crea la implementación en el archivo ~/project/logfilter.go.
  • Asegúrate de que la función no modifique la slice original y devuelva una nueva slice con los resultados procesados.
  • No uses ninguna biblioteca externa para el filtrado.
  • Extrae y devuelve solo el contenido del mensaje después de la palabra clave (por ejemplo, "Disk is almost full" en lugar de "2023-06-15 ERROR: Disk is almost full").
  • Utiliza funciones de manipulación de cadenas para procesar los registros.

Ejemplos

Dadas las siguientes entradas de registro:

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

Salida:

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]

Pistas

  1. Iterar sobre los registros: Utiliza un bucle for para comprobar cada entrada de registro.
  2. Encontrar la palabra clave: Busca el patrón "<KEYWORD>: " en el registro.
  3. Extraer el mensaje: Utiliza slicing para obtener la parte después de la palabra clave y ": ".
  4. Manejar entradas vacías: Devuelve una slice vacía si los registros o la palabra clave están vacíos.
  5. Añadir resultados: Utiliza append para añadir los mensajes coincidentes a una nueva slice.
✨ Revisar Solución y Practicar

Resumen

En resumen, este desafío te pide que implementes una función filterLogs que procese y extraiga de manera eficiente los mensajes de registro (logs) relevantes (excluyendo metadatos) de una slice de cadenas de registro en función de una palabra clave dada. La función debe distinguir entre mayúsculas y minúsculas, manejar adecuadamente las slices vacías y las palabras clave vacías, y demostrar competencia en el uso de operaciones de manipulación de slices y cadenas de Go para filtrar y devolver los mensajes de registro procesados.