Ce face log.Printf
log.Printf folosește aceleași verbe de formatare ca fmt.Printf: %s, %d, %v, %q, %.2f, %w nu (acela e doar pentru fmt.Errorf). Adaugă un rând nou la final dacă lipsește.
go vet verifică șabloanele lui log.Printf la fel ca pe cele ale lui fmt.Printf: număr greșit de argumente sau verb nepotrivit opresc verificarea.
Parametri
| Parametru | Descriere |
|---|---|
format |
Șablonul mesajului. |
v |
Valorile care înlocuiesc verbele din șablon. |
Ce returnează
Nimic.
Exemple
Exemplul 1: Mesaje formatate
package main
import (
"log"
"os"
"time"
)
func main() {
log.SetOutput(os.Stdout)
log.SetFlags(0)
log.Printf("comanda %d: %s, total %.2f lei", 1042, "Ana Popescu", 249.9)
log.Printf("fișier %q procesat în %v", "clienti.csv", 1500*time.Millisecond)
log.Printf("stoc: %v", map[string]int{"mere": 12, "pere": 0})
}
Rezultat
comanda 1042: Ana Popescu, total 249.90 lei
fișier "clienti.csv" procesat în 1.5s
stoc: map[mere:12 pere:0]
Exemplul 2: Jurnalul unei cereri HTTP (simulat)
package main
import (
"log"
"os"
"time"
)
func main() {
log.SetOutput(os.Stdout)
log.SetFlags(0)
cereri := []struct {
metoda, cale string
status int
durata time.Duration
}{
{"GET", "/produse", 200, 12 * time.Millisecond},
{"POST", "/cos", 201, 48 * time.Millisecond},
{"GET", "/admin", 403, 2 * time.Millisecond},
}
for _, c := range cereri {
log.Printf("%-4s %-9s %d %6v", c.metoda, c.cale, c.status, c.durata)
}
}
Rezultat
GET /produse 200 12ms
POST /cos 201 48ms
GET /admin 403 2ms
Greșeli frecvente
- Dai lui
log.Printfun text venit de la utilizator ca șablon:log.Printf(mesaj). Dacă textul conține%, apar valori ciudate; scrielog.Printf("%s", mesaj)saulog.Print(mesaj).
Comenzi înrudite
log.Println: Scrie un mesaj în jurnal, precedat de dată și oră; Println pune spații între valori, Print ca fmt.Print.log.Fatal: Scrie mesajul în jurnal și oprește imediat programul cu codul 1 (ca log.Print urmat de os.Exit(1)).log.New: Creează un jurnal separat (*log.Logger), cu propria destinație, prefix și opțiuni.slog.Info: Scrie în jurnalul structurat implicit un mesaj de nivel INFO, cu perechi cheie-valoare.