实现切片日志过滤函数
开发一个基于切片的日志过滤函数,针对给定的关键字进行处理,并仅提取日志消息内容(不含时间戳)。
任务
- 实现
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]
提示
- 遍历日志:使用
for 循环检查每个日志条目。
- 查找关键字:在日志中寻找
"<KEYWORD>: " 这种模式。
- 提取消息:使用切片操作获取关键字和
": " 之后的部分。
- 处理空输入:如果日志或关键字为空,则返回一个空切片。
- 追加结果:使用
append 将匹配的消息添加到新切片中。