Ce face slog.Debug
slog.Debug este pentru detalii utile doar când cauți o problemă: valori intermediare, pașii unui algoritm, cereri trimise. Nivelul minim implicit al handler-elor este INFO, deci mesajele DEBUG sunt ignorate până când cobori nivelul cu HandlerOptions{Level: slog.LevelDebug}.
Un tipar comun: nivelul se alege dintr-o opțiune de linie de comandă (-debug) sau dintr-o variabilă de mediu, fără să schimbi codul.
Parametri
| Parametru | Descriere |
|---|---|
msg |
Mesajul. |
args |
Perechi cheie, valoare. |
Ce returnează
Nimic.
Exemple
Exemplul 1: Mesajele DEBUG sunt ascunse implicit
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})))
slog.Debug("calculez reducerea", "total", 640)
slog.Info("reducere aplicată", "procent", 10)
}
Rezultat
level=INFO msg="reducere aplicată" procent=10
Exemplul 2: Nivel ales dintr-o variabilă de mediu
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() {
os.Setenv("DEBUG", "1") // în practică: DEBUG=1 ./program
nivel := slog.LevelInfo
if os.Getenv("DEBUG") == "1" {
nivel = slog.LevelDebug
}
opt := &slog.HandlerOptions{Level: nivel, ReplaceAttr: faraTimp}
slog.SetDefault(slog.New(slog.NewTextHandler(os.Stdout, opt)))
slog.Debug("calculez reducerea", "total", 640)
slog.Info("reducere aplicată", "procent", 10)
}
Rezultat
level=DEBUG msg="calculez reducerea" total=640
level=INFO msg="reducere aplicată" procent=10
Greșeli frecvente
- Calculezi valori costisitoare doar pentru un mesaj DEBUG care oricum nu se afișează. Verifică întâi cu
logger.Enabled(ctx, slog.LevelDebug)sau folosește unslog.LogValuer, evaluat doar când e nevoie.
Comenzi înrudite
slog.HandlerOptions: Opțiunile handler-elor text și JSON: nivelul minim, adăugarea fișierului sursă și modificarea oricărui atribut.slog.Level: Tipul nivelului unui mesaj (DEBUG, INFO, WARN, ERROR); valorile mai mari înseamnă mesaje mai importante.slog.Info: Scrie în jurnalul structurat implicit un mesaj de nivel INFO, cu perechi cheie-valoare.