Why should I use log.Println instead of fmt.Println?

LoggingGo

Logging Problem Overview


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 ?

Logging Solutions


Solution 1 - Logging

Two things are different:

  1. Printing via package log is safe from concurrent goroutines (while plain fmt isn't)

  2. Log can add timing information automatically.

So these are two completely different things. log is for logging and fmt for formatting. (Okay, log uses the same verbs and flags, but that is just convenient).

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSalah Eddine TaouriritView Question on Stackoverflow
Solution 1 - LoggingVolkerView Answer on Stackoverflow