Log Parsing
Log tahlili (parsing)
Xom log qatori — odatiy odam uchun o'qish mumkin bo'lgan matn, lekin dastur uchun bu FAQAT bitta uzun satr, xolos. Parsing (tahlil qilish) — shu xom matnni, dastur QIDIRISH va FILTRLASH uchun ishlatadigan, STRUKTURAVIY ma'lumotga (Go struct'iga) aylantirish jarayoni.
package main
import (
"fmt"
"strings"
)
type LogEntry struct {
Timestamp string
Level string
Service string
Message string
}
// parseLine — "2026-01-01T10:00:00Z ERROR payments to'lov muvaffaqiyatsiz"
// formatidagi qatorni LogEntry'ga aylantiradi
func parseLine(line string) (LogEntry, error) {
parts := strings.SplitN(line, " ", 4)
if len(parts) != 4 {
return LogEntry{}, fmt.Errorf("noto'g'ri format: %q", line)
}
return LogEntry{
Timestamp: parts[0],
Level: parts[1],
Service: parts[2],
Message: parts[3],
}, nil
}
func main() {
entry, err := parseLine("2026-01-01T10:00:00Z ERROR payments to'lov muvaffaqiyatsiz")
fmt.Println(entry.Level, entry.Service, err)
}strings.SplitN(line, " ", 4) — "String Manipulation" darsida ko'rgan Splitning "cheklangan" versiyasi: matnni bo'sh joy orqali FAQAT 4 ta bo'lakka ajratadi (birinchi 3 ta bo'sh joygacha), QOLGAN barcha matn (xabarning o'zi, ichida bo'sh joy bo'lsa ham) TO'RTINCHI bo'lakka to'liq tushadi. Agar oddiy Split ishlatilganda, xabar ICHIDAGI bo'sh joylar HAM noto'g'ri bo'linib ketardi.
len(parts) != 4 tekshiruvi — "Error Handling" darsida ko'rgan tamoyil: agar qator KUTILGAN formatga mos KELMASA (masalan juda qisqa bo'lsa), aniq xato qaytariladi, dastur BUZILISH (panic) o'rniga XATOLIKNI to'g'ri boshqaradi.
>_ Exercise
Noto'g'ri formatdagi qatorlarni filtrlab, faqat to'g'ri tahlil qilinganlarni saqlang.
- •Berilgan qatorlar ro'yxati bo'ylab yurib, har birini parseLine orqali tahlil qiling
- •Xatosiz tahlil qilinganlarni entries slice'ga qo'shing, xato bo'lganlarini o'tkazib yuboring
- •len(entries) natijasini chop eting
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
Log parsing — xom matn qatorlarini strukturaviy LogEntry'larga aylantiradi, noto'g'ri formatdagi qatorlarni esa dasturni buzmasdan, aniq xato bilan chetlab o'tadi.
NEXT UP
Storage Engine
$ go run main.go
Kodingizni ishga tushiring