GoDasturchi
Log Parsing

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.

example.go
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.

Hints (0/3)

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

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

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.

example.go
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.

Hints (0/3)

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