Ce face slog.Time
slog.Time adaugă un moment în timp: data unei comenzi, termenul de livrare, ultima autentificare. Handler-ul text îl scrie ca RFC 3339 cu milisecunde (2025-03-14T10:30:00.000Z), iar cel JSON ca RFC 3339 ("2025-03-14T10:30:00Z").
Nu confunda cu atributul automat time (cheia slog.TimeKey), pe care handler-ul îl adaugă singur fiecărui mesaj cu momentul scrierii.
Parametri
| Parametru | Descriere |
|---|---|
key |
Numele câmpului. |
v |
Momentul. |
Ce returnează
Un slog.Attr.
Exemple
Exemplul 1: Termen de livrare
package main
import (
"log/slog"
"os"
"time"
)
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}
plasata := time.Date(2025, time.March, 14, 10, 30, 0, 0, time.UTC)
livrare := plasata.AddDate(0, 0, 3)
slog.New(slog.NewTextHandler(os.Stdout, opt)).Info("comandă plasată",
slog.Time("plasata", plasata), slog.Time("livrare", livrare))
slog.New(slog.NewJSONHandler(os.Stdout, opt)).Info("comandă plasată",
slog.Time("plasata", plasata), slog.Time("livrare", livrare))
}
Rezultat
level=INFO msg="comandă plasată" plasata=2025-03-14T10:30:00.000Z livrare=2025-03-17T10:30:00.000Z
{"level":"INFO","msg":"comandă plasată","plasata":"2025-03-14T10:30:00Z","livrare":"2025-03-17T10:30:00Z"}
Exemplul 2: Atributul time automat
Fără ReplaceAttr, fiecare rând începe cu momentul scrierii, care diferă la fiecare rulare.
package main
import (
"log/slog"
"os"
)
func main() {
logger := slog.New(slog.NewTextHandler(os.Stdout, nil))
logger.Info("aplicație pornită")
}
Rezultat posibil (diferă la fiecare rulare)
time=2025-03-14T12:30:00.482+02:00 level=INFO msg="aplicație pornită"
Greșeli frecvente
- Formatezi singur data ca text (
"02.01.2006") înainte de jurnal. Pierzi fusul orar și ordonarea corectă; lasăslog.Timesă scrie formatul standard.
Comenzi înrudite
slog.Duration: Creează un atribut cu o durată (time.Duration): în text apare ca 1.5s, în JSON ca număr de nanosecunde.slog.HandlerOptions: Opțiunile handler-elor text și JSON: nivelul minim, adăugarea fișierului sursă și modificarea oricărui atribut.slog.String: Creează un atribut tipizat (text, întreg, boolean) pentru un mesaj slog, în locul perechii cheie, valoare.