概要
過去に go-workers でライブラリ自体のロギングをカスタムする方法を紹介しました
基本的には標準出力に出力されるようで標準エラーにエラーの内容を分けたい場合は少しコツがいるようです
環境
- macOS 10.15.2
- golang 1.12.9
- go-workers dbf81d0b75bbe2fd90ef66a07643dd70cb42a88a
サンプルコード
全体のコードは過去の記事を参考にしてください
ポイントとなる Println の部分だけ紹介します
func (l *MyLogger) Println(kv ...interface{}) {
msg := ""
elog := false
for _, v := range kv {
switch v.(type) {
case string:
msg += v.(string) + " "
case int:
msg += strconv.Itoa((v.(int))) + " "
case error:
elog = true
msg += v.(error).Error() + " "
}
}
if elog {
log.SetOutput(ioutil.Discard)
log.SetOutput(os.Stderr)
log.Println(msg)
} else {
log.SetOutput(os.Stdout)
log.Println(msg)
}
}
どうやら標準エラーのみ出力したいログの場合には直前に log.SetOutput(ioutil.Discard)
を実行する必要がありそうです
もじ log.SetOutput(ioutil.Discard)
していないと elog に入った場合でも標準出力にログが出力されてしまいます
0 件のコメント:
コメントを投稿