Ce face slog.Level
slog.Level este un număr întreg. Constantele standard sunt LevelDebug (-4), LevelInfo (0), LevelWarn (4) și LevelError (8). Un handler afișează doar mesajele cu nivelul mai mare sau egal cu nivelul lui minim.
Spațiul dintre constante permite niveluri proprii: slog.LevelError + 4 se afișează ca ERROR+4, iar slog.Level(2) ca INFO+2. Pentru un nivel care se poate schimba în timp ce programul rulează (de exemplu dintr-un endpoint de administrare), folosește slog.LevelVar.
Ce returnează
Nu se aplică (este un tip). Level.String() returnează numele afișat.
Exemple
Exemplul 1: Valorile și numele nivelurilor
package main
import (
"fmt"
"log/slog"
)
func main() {
for _, l := range []slog.Level{slog.LevelDebug, slog.LevelInfo, slog.LevelWarn, slog.LevelError, slog.Level(2), slog.LevelError + 4} {
fmt.Printf("%3d %s\n", int(l), l)
}
var l slog.Level
err := l.UnmarshalText([]byte("warn"))
fmt.Println("din text:", l, err)
}
Rezultat
-4 DEBUG
0 INFO
4 WARN
8 ERROR
2 INFO+2
12 ERROR+4
din text: WARN <nil>
Exemplul 2: Nivel schimbat în timpul rulării cu LevelVar
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() {
var nivel slog.LevelVar // implicit INFO
logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: &nivel, ReplaceAttr: faraTimp}))
logger.Debug("nu apare")
nivel.Set(slog.LevelDebug) // de exemplu, la o cerere de administrare
logger.Debug("acum apare", "nivel", nivel.Level())
nivel.Set(slog.LevelError)
logger.Warn("nu mai apare")
logger.Error("doar erorile")
}
Rezultat
level=DEBUG msg="acum apare" nivel=DEBUG
level=ERROR msg="doar erorile"
Greșeli frecvente
- Compari nivelurile ca text. Ele sunt numere:
if nivel >= slog.LevelWarn.
Comenzi înrudite
slog.HandlerOptions: Opțiunile handler-elor text și JSON: nivelul minim, adăugarea fișierului sursă și modificarea oricărui atribut.slog.Debug: Scrie un mesaj de nivel DEBUG, cu detalii pentru depanare; implicit aceste mesaje nu sunt afișate.slog.Logger: Tipul jurnalului structurat: are metodele Debug, Info, Warn, Error, Log și creează loggeri derivați cu With.