Your First slog Logger
Birinchi slog logeringiz
log/slog bilan ishlash uchun avval "logger" yaratasiz — u qayerga (os.Stdout) va qanday formatda (matn yoki JSON) yozishni biladi.
package main
import (
"log/slog"
"os"
)
// Sinov muhitida vaqt doim bir xil bo'lgani uchun,
// chiqishni tushunarli qilish uchun timestamp'ni olib tashlaymiz.
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() {
logger := slog.New(slog.NewTextHandler(os.Stdout, opts))
logger.Info("dastur ishga tushdi")
logger.Warn("xotira kam", "free_mb", 128)
}slog.NewTextHandler(os.Stdout, opts) — logларni odam o'qiy oladigan matn ko'rinishida os.Stdoutga yozadigan "handler" (ishlov beruvchi) yaratadi. slog.New(handler) esa shu handler bilan ishlaydigan logger'ni yaratadi. logger.Info(xabar, kalit1, qiymat1, ...) — Info darajasida log yozadi, undan keyingi juft-juft argumentlar — qo'shimcha ma'lumot (bu yerda free_mb=128).
ReplaceAttr — har bir log maydoni yozilishidan oldin ishga tushadigan "filtr" funksiya; biz uni vaqt (time) maydonini butunlay olib tashlash uchun ishlatdik — bu real loyihada ham (masalan testlarda) foydali texnika.
>_ Exercise
O'zingizning logeringizni yarating va xabar yozing.
- •slog.NewTextHandler bilan os.Stdout'ga yozuvchi logger yarating (opts bilan)
- •"server tayyor" xabarini Info darajasida yozing
- •"port band" xabarini "port", 8080 atributi bilan Warn darajasida yozing
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
slog.New + slog.NewTextHandler — birinchi strukturaviy logeringizni yaratish uchun kerak bo'lgan hammasi; xabardan keyingi juft argumentlar qo'shimcha maydonlarga aylanadi.
NEXT UP
Log Levels
$ go run main.go
Kodingizni ishga tushiring