为什么我应该使用log.Println而不是fmt.Println?

时间:2013-10-28 23:22:05

标签: logging go

log.go(日志包的实现):

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只是fmt.Sprintln的函数包装器,我为什么要使用它而不是fmt.Printlnfmt.Sprintln

任何实际原因?

1 个答案:

答案 0 :(得分:74)

有两件事是不同的:

  1. 通过包日志打印对于并发goroutine是安全的(而fmt则不是这样)

  2. 日志可以自动添加时间信息。

  3. 所以这些是完全不同的两件事。 log用于记录,fmt用于格式化。 (好吧,日志使用相同的动词和标志,但这很方便)。