web-dev-qa-db-ja.com

fmt.Printlnの代わりにlog.Printlnを使用する必要があるのはなぜですか?

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.Println または fmt.Sprintln

実用的な理由は?

58
tarrsalah

2つのことが異なります。

  1. パッケージログを介した印刷は、同時のゴルーチンから安全です(プレーンfmtはそうではありません)

  2. ログは、タイミング情報を自動的に追加できます。

したがって、これらは2つのまったく異なるものです。 logはロギング用で、fmtはフォーマット用です。 (さて、ログは同じ動詞とフラグを使用しますが、それはちょうど便利です)。

78
Volker