GoDasturchi
JSON and Text Handlers

JSON and Text Handlers

JSON va matn handler'lari

slog ikkita tayyor handler bilan keladi: TextHandler (odam o'qish uchun qulay, terminalda ko'rish uchun) va JSONHandler (dasturlar tomonidan qayta ishlash uchun qulay — log yig'uvchi tizimlar odatda JSON kutadi).

example.go
package main

import (
	"log/slog"
	"os"
)

var opts = &slog.HandlerOptions{
	ReplaceAttr: func(groups []string, a slog.Attr) slog.Attr {
		if a.Key == slog.TimeKey {
			return slog.Attr{}
		}
		return a
	},
}

func main() {
	textLogger := slog.New(slog.NewTextHandler(os.Stdout, opts))
	textLogger.Info("matn formatida", "key", "value")

	jsonLogger := slog.New(slog.NewJSONHandler(os.Stdout, opts))
	jsonLogger.Info("JSON formatida", "key", "value")
}

Ikkala handler ham bir xil slog.Logger interfeysini beradi — kod ichida logger.Info(...) chaqirish bir xil, faqat qaysi handler bilan yaratilganiga qarab chiqish formati o'zgaradi. Ko'p loyihalarda: rivojlantirish paytida TextHandler (o'qish qulay), production'da esa JSONHandler (log yig'uvchi tizimlar — masalan ELK, Grafana Loki — bilan ishlash uchun) ishlatiladi.

>_ Exercise

Bir xil xabarni ikkala formatda ham chiqaring.

  • TextHandler bilan logger yasab "xizmat ishga tushdi" ("env", "dev") yozing
  • JSONHandler bilan logger yasab xuddi shu xabarni ("env", "prod") bilan yozing

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

TextHandler va JSONHandler bir xil logger kodidan turli formatdagi chiqish oladi — odatda rivojlantirishda matn, production'da JSON ishlatiladi.

NEXT UP

Production Logging Patterns

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

JSON and Text Handlers

JSON va matn handler'lari

slog ikkita tayyor handler bilan keladi: TextHandler (odam o'qish uchun qulay, terminalda ko'rish uchun) va JSONHandler (dasturlar tomonidan qayta ishlash uchun qulay — log yig'uvchi tizimlar odatda JSON kutadi).

example.go
package main

import (
	"log/slog"
	"os"
)

var opts = &slog.HandlerOptions{
	ReplaceAttr: func(groups []string, a slog.Attr) slog.Attr {
		if a.Key == slog.TimeKey {
			return slog.Attr{}
		}
		return a
	},
}

func main() {
	textLogger := slog.New(slog.NewTextHandler(os.Stdout, opts))
	textLogger.Info("matn formatida", "key", "value")

	jsonLogger := slog.New(slog.NewJSONHandler(os.Stdout, opts))
	jsonLogger.Info("JSON formatida", "key", "value")
}

Ikkala handler ham bir xil slog.Logger interfeysini beradi — kod ichida logger.Info(...) chaqirish bir xil, faqat qaysi handler bilan yaratilganiga qarab chiqish formati o'zgaradi. Ko'p loyihalarda: rivojlantirish paytida TextHandler (o'qish qulay), production'da esa JSONHandler (log yig'uvchi tizimlar — masalan ELK, Grafana Loki — bilan ishlash uchun) ishlatiladi.

>_ Exercise

Bir xil xabarni ikkala formatda ham chiqaring.

  • TextHandler bilan logger yasab "xizmat ishga tushdi" ("env", "dev") yozing
  • JSONHandler bilan logger yasab xuddi shu xabarni ("env", "prod") bilan yozing

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

TextHandler va JSONHandler bir xil logger kodidan turli formatdagi chiqish oladi — odatda rivojlantirishda matn, production'da JSON ishlatiladi.

NEXT UP

Production Logging Patterns