GoDasturchi
Your First slog Logger

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.

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

Hints (0/3)

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

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

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.

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

Hints (0/3)

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