Log Groups

Log Groups

Log guruhlari

Bog'liq atributlarni birlashtirib, ularga umumiy prefiks berish uchun "guruh" (group) ishlatiladi — masalan HTTP so'rovi haqidagi barcha maydonlarni http. prefiksi ostida to'plash.

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() {
	logger := slog.New(slog.NewTextHandler(os.Stdout, opts))

	httpLogger := logger.WithGroup("http")
	httpLogger.Info("so'rov keldi", "method", "GET", "path", "/users")
}

logger.WithGroup("http") — asl logger'dan yangi logger yasaydi, unga yozilgan barcha atributlar avtomatik http. prefiksi bilan chiqadi (http.method=GET, http.path=/users). Bu — bir nechta "soha" (masalan HTTP, baza, foydalanuvchi) haqidagi loglarni bir-biridan aniq ajratish uchun juda qulay, ayniqsa JSON formatda logni ichma-ich obyekt qilib ko'rsatadi.

>_ Exercise

Baza operatsiyasi uchun guruhlangan logger yasang.

  • logger'dan "db" guruhini WithGroup bilan yasang
  • "so'rov bajarildi" xabarini "table", "users" va "duration_ms", 42 atributlari bilan yozing

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

WithGroup bog'liq atributlarni umumiy prefiks ostida to'playdi — turli sohalardagi loglarni aniq ajratish uchun ishlatiladi.

NEXT UP

JSON and Text Handlers

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Log Groups

Log guruhlari

Bog'liq atributlarni birlashtirib, ularga umumiy prefiks berish uchun "guruh" (group) ishlatiladi — masalan HTTP so'rovi haqidagi barcha maydonlarni http. prefiksi ostida to'plash.

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() {
	logger := slog.New(slog.NewTextHandler(os.Stdout, opts))

	httpLogger := logger.WithGroup("http")
	httpLogger.Info("so'rov keldi", "method", "GET", "path", "/users")
}

logger.WithGroup("http") — asl logger'dan yangi logger yasaydi, unga yozilgan barcha atributlar avtomatik http. prefiksi bilan chiqadi (http.method=GET, http.path=/users). Bu — bir nechta "soha" (masalan HTTP, baza, foydalanuvchi) haqidagi loglarni bir-biridan aniq ajratish uchun juda qulay, ayniqsa JSON formatda logni ichma-ich obyekt qilib ko'rsatadi.

>_ Exercise

Baza operatsiyasi uchun guruhlangan logger yasang.

  • logger'dan "db" guruhini WithGroup bilan yasang
  • "so'rov bajarildi" xabarini "table", "users" va "duration_ms", 42 atributlari bilan yozing

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

WithGroup bog'liq atributlarni umumiy prefiks ostida to'playdi — turli sohalardagi loglarni aniq ajratish uchun ishlatiladi.

NEXT UP

JSON and Text Handlers