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).
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.
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
$ go run main.go
Kodingizni ishga tushiring