Ce face slog.Group
slog.Group("cerere", "metoda", "GET", "cale", "/produse") creează un singur atribut care conține alte atribute. Handler-ul text le scrie cu prefix (cerere.metoda=GET cerere.cale=/produse), iar cel JSON ca obiect imbricat ("cerere":{"metoda":"GET",...}).
Grupurile țin ordinea în jurnale cu multe câmpuri și evită coliziunile de nume (de exemplu cerere.id și utilizator.id). Pentru a pune toate atributele următoare într-un grup, folosește logger.WithGroup.
Parametri
| Parametru | Descriere |
|---|---|
key |
Numele grupului. |
args |
Atributele din grup: perechi cheie, valoare sau slog.Attr. |
Ce returnează
Un slog.Attr de tip grup.
Exemple
Exemplul 1: Grupuri în text și în JSON
package main
import (
"log/slog"
"os"
)
func faraTimp(groups []string, a slog.Attr) slog.Attr {
if a.Key == slog.TimeKey && len(groups) == 0 {
return slog.Attr{} // un atribut gol nu este afișat
}
return a
}
func main() {
opt := &slog.HandlerOptions{ReplaceAttr: faraTimp}
for _, logger := range []*slog.Logger{
slog.New(slog.NewTextHandler(os.Stdout, opt)),
slog.New(slog.NewJSONHandler(os.Stdout, opt)),
} {
logger.Info("cerere servită",
slog.Group("cerere", "metoda", "GET", "cale", "/produse", "id", "a1b2"),
slog.Group("utilizator", slog.Int("id", 7), slog.String("oras", "Iași")),
"status", 200)
}
}
Rezultat
level=INFO msg="cerere servită" cerere.metoda=GET cerere.cale=/produse cerere.id=a1b2 utilizator.id=7 utilizator.oras=Iași status=200
{"level":"INFO","msg":"cerere servită","cerere":{"metoda":"GET","cale":"/produse","id":"a1b2"},"utilizator":{"id":7,"oras":"Iași"},"status":200}
Greșeli frecvente
- Creezi un grup gol:
slog.Group("extra"). Handler-ele nu afișează grupurile goale, deci nu apare nimic.
Comenzi înrudite
slog.Logger.WithGroup: Returnează un logger nou care pune toate atributele următoare într-un grup cu numele dat.slog.Any: Creează un atribut cu o valoare de orice tip: structuri, liste, map-uri, erori.slog.String: Creează un atribut tipizat (text, întreg, boolean) pentru un mesaj slog, în locul perechii cheie, valoare.