投稿

5月, 2017の投稿を表示しています

goのlog系パッケージ標準エラー吐きがち説

goのロギングパッケージはstderrがお好き 早めに出社したらちょっとハマったので調べた TL;DR fmt.Println()はstdoutに吐くのにlog.Println()はstderrに吐くから気をつけようね。
世の中には2種類の標準出力しかいねえ()標準出力(stdout)標準エラー出力(stderr) あれ、log.Println()がerror出力に吐いてるぞ?と思った我々取材班はアマゾンに飛んだlog.Printlnのソース func Println(v ...interface{}) { std.Output(2, fmt.Sprintln(v...)) }
stdってなんやねん・・・とソースを上にスクロールするといた

var std = New(os.Stderr, "", LstdFlags) お前標準エラー出力やないか!!!!

Overviewにも書いてあるからぐうの音も出ない
Package log implements a simple logging package. It defines a type, Logger, with methods for formatting output. It also has a predefined 'standard' Logger accessible through helper functions Print[f|ln], Fatal[f|ln], and Panic[f|ln], which are easier to use than creating a Logger manually. That logger writes to standard error and prints the date and time of each logged message. Every log message is output on a separate line: if the message being printed does not end in a newline, the logger will add one. The Fatal functions call os.Exit(1) after writing the log messa…