Задача по фильтрации логов с использованием срезов

GolangBeginner
Практиковаться сейчас

Введение

В рамках этого испытания вам предстоит разработать функцию фильтрации логов на основе срезов, которая обрабатывает и извлекает соответствующие сообщения. Эффективная фильтрация логов критически важна в динамичном мире кибербезопасности для своевременного обнаружения потенциальных угроз. Ваша цель — реализовать функцию filterLogs, которая отбирает записи на основе заданного ключевого слова. При этом функция должна учитывать регистр символов, корректно обрабатывать пустые срезы и пустые ключевые слова. Кроме того, функция должна возвращать только содержание самого сообщения, исключая временные метки и другие метаданные.

Реализация функции фильтрации логов через срезы

Разработайте функцию фильтрации на основе срезов для обработки и извлечения только текста сообщения (без временных меток) по заданному ключевому слову.

Задачи

  • Реализуйте функцию filterLogs, которая принимает срез строк логов и ключевое слово.
  • Функция должна возвращать новый срез, содержащий только текст сообщений из тех записей, которые включают указанное ключевое слово.
  • Убедитесь, что функция чувствительна к регистру.
  • Используйте операции со срезами Go для фильтрации и обработки записей.
  • Предусмотрите корректную обработку пустых срезов и пустых ключевых слов.

Требования

  • Создайте реализацию в файле ~/project/logfilter.go.
  • Убедитесь, что функция не изменяет исходный срез и возвращает новый срез с результатами обработки.
  • Не используйте внешние библиотеки для фильтрации.
  • Извлекайте и возвращайте только текст сообщения, идущий после ключевого слова (например, "Disk is almost full" вместо "2023-06-15 ERROR: Disk is almost full").
  • Используйте функции манипуляции строками для обработки логов.

Примеры

Для следующих записей лога:

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

Вывод:

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]

Подсказки

  1. Итерация по логам: Используйте цикл for для проверки каждой записи.
  2. Поиск ключевого слова: Ищите шаблон "<KEYWORD>: " в строке лога.
  3. Извлечение сообщения: Используйте срезы строк, чтобы получить часть, идущую после ключевого слова и разделителя ": ".
  4. Обработка пустых входных данных: Возвращайте пустой срез, если входной список логов или ключевое слово пусты.
  5. Добавление результатов: Используйте функцию append для добавления подходящих сообщений в новый срез.
✨ Проверить решение и практиковаться

Резюме

Подводя итог, в этом испытании вам потребовалось реализовать функцию filterLogs, которая эффективно обрабатывает и извлекает текст сообщений (исключая метаданные) из среза строк логов на основе заданного ключевого слова. Функция учитывает регистр, корректно работает с пустыми данными и демонстрирует навыки владения срезами Go и операциями со строками для фильтрации и возврата обработанных данных.