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

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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


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{{"Задача по фильтрации журналов на основе срезов"}} go/slices -.-> lab-436686{{"Задача по фильтрации журналов на основе срезов"}} go/for -.-> lab-436686{{"Задача по фильтрации журналов на основе срезов"}} end

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

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

Задачи

  • Реализуйте функцию 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 для фильтрации и возврата обработанных записей из журналов.