Ce face slog.Warn
slog.Warn funcționează ca slog.Info, dar cu nivelul WARN. Îl folosești pentru situații care merită atenție, fără să fie erori: o operație a reușit abia la a doua încercare, stocul este aproape gol, o setare veche este încă folosită.
Nivelul permite filtrarea: în producție poți afișa doar mesajele de la WARN în sus (vezi HandlerOptions.Level).
Parametri
| Parametru | Descriere |
|---|---|
msg |
Mesajul. |
args |
Perechi cheie, valoare. |
Ce returnează
Nimic.
Exemple
Exemplul 1: Avertismente într-un magazin
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() {
slog.SetDefault(slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{ReplaceAttr: faraTimp})))
stoc := map[string]int{"cafea": 2, "ceai": 40}
for _, produs := range []string{"cafea", "ceai"} {
if stoc[produs] < 5 {
slog.Warn("stoc aproape epuizat", "produs", produs, "ramas", stoc[produs])
} else {
slog.Info("stoc în regulă", "produs", produs, "ramas", stoc[produs])
}
}
}
Rezultat
level=WARN msg="stoc aproape epuizat" produs=cafea ramas=2
level=INFO msg="stoc în regulă" produs=ceai ramas=40
Exemplul 2: Doar avertismente și erori
Cu Level: slog.LevelWarn, mesajele INFO nu mai apar.
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{Level: slog.LevelWarn, ReplaceAttr: faraTimp}
slog.SetDefault(slog.New(slog.NewTextHandler(os.Stdout, opt)))
slog.Info("cerere primită", "cale", "/produse")
slog.Warn("răspuns lent", "cale", "/produse", "ms", 2300)
slog.Error("baza de date nu răspunde", "incercari", 3)
}
Rezultat
level=WARN msg="răspuns lent" cale=/produse ms=2300
level=ERROR msg="baza de date nu răspunde" incercari=3
Greșeli frecvente
- Scrii totul ca
Warnca să fie „văzut”. Dacă jurnalul e plin de avertismente, nimeni nu le mai citește; păstreazăWARNpentru situații care cer atenție.
Comenzi înrudite
slog.Info: Scrie în jurnalul structurat implicit un mesaj de nivel INFO, cu perechi cheie-valoare.slog.Error: Scrie în jurnalul implicit un mesaj de nivel ERROR, de obicei împreună cu eroarea primită.slog.Level: Tipul nivelului unui mesaj (DEBUG, INFO, WARN, ERROR); valorile mai mari înseamnă mesaje mai importante.slog.HandlerOptions: Opțiunile handler-elor text și JSON: nivelul minim, adăugarea fișierului sursă și modificarea oricărui atribut.