From log.go (the implementation of the log package) :
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
is just a function wrapper for fmt.Sprintln
, why should I use it instead of fmt.Println
or fmt.Sprintln
?
Any practical reasons ?
Two things are different:
Printing via package log is safe from concurrent goroutines (which plain
fmt
isn't)Log can add timing information automatically.
So these are two complete different things. log is for logging and
fmt
for formatting. (Okay, log uses the same verbs and flags, but that is just convenient).