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

De log.go (l’implémentation du package de journal):

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 à la place de fmt.Println ou de fmt.Sprintln ?

Des raisons pratiques?

Deux choses sont différentes:

  1. L’impression via un journal de paquet est à l’abri des goroutines simultanées (quelle que fmt soit)

  2. Log peut append des informations de synchronisation automatiquement.

Donc, ce sont deux choses complètement différentes. log est pour la journalisation et fmt pour le formatage. (Ok, log utilise les mêmes verbes et drapeaux, mais cela est pratique).