web-dev-qa-db-fra.com

Pourquoi devrais-je utiliser log.Println au lieu de fmt.Println?

De log.go (l'implémentation du paquet de journaux):

167 // Println calls l.Output to print to the logger.
168 // Arguments are handled in the manner of fmt.Println.
169 func (l *Logger) Println(v ...interface{}) { l.Output(2, fmt.Sprintln(v...)) }

log.Println est juste un wrapper de fonction pour fmt.Sprintln , pourquoi devrais-je l'utiliser au lieu de fmt.Println ou fmt.Sprintln ?

Des raisons pratiques?

58
tarrsalah

Deux choses sont différentes:

  1. L'impression via le journal de paquetage est à l'abri des goroutines simultanées (alors que plain fmt ne l'est pas)

  2. Le journal peut ajouter automatiquement des informations de chronométrage.

Ce sont donc deux choses complètement différentes. log est pour la journalisation et fmt pour le formatage. (D'accord, log utilise les mêmes verbes et drapeaux, mais c'est juste pratique).

78
Volker