切片日志过滤挑战

GolangGolangBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在这个挑战中,你将开发一个基于切片的日志过滤函数,用于处理和提取相关的日志消息。在快节奏的网络安全领域,高效的日志过滤对于识别潜在的安全威胁至关重要。目标是实现 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 切片和字符串操作来过滤和返回处理后的日志消息的能力。