log.SetFlags în Go

Alege ce informații se pun la începutul fiecărui rând din jurnal: data, ora, microsecundele, fișierul și linia.

Sintaxă
func SetFlags(flag int)

// log.Ldate | log.Ltime | log.Lmicroseconds | log.Llongfile | log.Lshortfile | log.LUTC | log.Lmsgprefix
// log.LstdFlags = log.Ldate | log.Ltime

Ce face log.SetFlags

log.SetFlags setează antetul fiecărui mesaj pentru jurnalul implicit. Opțiunile se combină cu |: log.Ldate (2025/03/14), log.Ltime (10:30:00), log.Lmicroseconds (adaugă .123456), log.Lshortfile (main.go:12), log.Llongfile (calea completă), log.LUTC (ora UTC în loc de ora locală), log.Lmsgprefix (prefixul vine după antet, înaintea mesajului).

Valoarea implicită este log.LstdFlags (data și ora). log.SetFlags(0) elimină tot antetul, util când jurnalul ajunge în systemd sau Docker, care adaugă singure data.

Parametri

Parametru Descriere
flag Combinația de opțiuni, de exemplu log.Ltime | log.Lshortfile.

Ce returnează

Nimic. log.Flags() returnează valoarea curentă.

Exemple

Exemplul 1: Fișier și linie, fără dată

Lshortfile arată de unde a fost scris mesajul; data o lăsăm deoparte ca rezultatul să fie stabil.

package main

import (
    "log"
    "os"
)

func main() {
    log.SetOutput(os.Stdout)
    log.SetFlags(log.Lshortfile)
    log.Println("încarc produsele")
    verifica()
}

func verifica() {
    log.Println("stoc verificat")
}

Rezultat

main.go:11: încarc produsele
main.go:16: stoc verificat

Exemplul 2: Combinații de opțiuni

package main

import "log"

func main() {
    log.Println("implicit (LstdFlags)")
    log.SetFlags(log.Ldate | log.Ltime | log.Lmicroseconds | log.LUTC)
    log.Println("cu microsecunde, în UTC")
    log.SetFlags(log.Ltime | log.Lshortfile)
    log.Println("ora și locul")
    log.SetFlags(0)
    log.Println("fără antet")
}

Rezultat posibil (diferă la fiecare rulare)

2025/03/14 12:30:00 implicit (LstdFlags)
2025/03/14 10:30:00.482913 cu microsecunde, în UTC
12:30:00 main.go:10: ora și locul
fără antet

Greșeli frecvente

  • Folosești log.Llongfile în producție. Calea completă a fișierului sursă de pe calculatorul de build ajunge în fiecare rând.
  • Schimbi opțiunile jurnalului implicit dintr-o bibliotecă. Afectează tot programul; creează-ți propriul jurnal cu log.New.

Comenzi înrudite

  • log.SetPrefix: Setează un text pus la începutul fiecărui rând din jurnalul implicit, de exemplu numele aplicației.
  • log.SetOutput: Schimbă locul în care scrie jurnalul implicit: alt fișier, ieșirea standard, un buffer sau mai multe deodată.
  • log.New: Creează un jurnal separat (*log.Logger), cu propria destinație, prefix și opțiuni.
  • log.Println: Scrie un mesaj în jurnal, precedat de dată și oră; Println pune spații între valori, Print ca fmt.Print.