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

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

からログ(ログパッケージの実装):

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?

何か実際的な理由はありますか?

ベストアンサー1

2 つの点が異なります。

  1. パッケージ log による印刷は並行 goroutine から安全です (plain はfmtそうではありません)

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

つまり、これらはまったく異なる 2 つのものです。log はログ記録用とfmtフォーマット用です。(確かに、log は同じ動詞とフラグを使用しますが、これは単に便利なだけです)。

おすすめ記事