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