تمرين إعادة البناء
Log Parser
أعد كتابة برنامج Go يلخص مستويات رسائل السجل.
go
~18 دقيقة
متوسط
أعد بناء الكود
Rebuild
هذا هو الكود. اكتبه بنفسك.
الكود المرجعي
package main
import (
"bufio"
"fmt"
"sort"
"strings"
)
func parseLevels(logText string) map[string]int {
counts := map[string]int{"INFO": 0, "WARN": 0, "ERROR": 0}
scanner := bufio.NewScanner(strings.NewReader(logText))
for scanner.Scan() {
fields := strings.Fields(scanner.Text())
if len(fields) < 2 {
continue
}
level := strings.Trim(fields[1], "[]")
if _, ok := counts[level]; ok {
counts[level]++
}
}
return counts
}
func main() {
logText := `09:00 [INFO] service started
09:01 [WARN] retrying slow request
09:02 [ERROR] payment failed
09:03 [INFO] service recovered`
counts := parseLevels(logText)
levels := make([]string, 0, len(counts))
for level := range counts {
levels = append(levels, level)
}
sort.Strings(levels)
for _, level := range levels {
fmt.Printf("%-5s %d\n", level, counts[level])
}
}اكتب هنا