🐙
Golang ロギング
ログの標準パッケージ
logパッケージ
import (
"log"
)
func main() {
log.Print("This is test")
}
実行
2021/07/27 07:39:17 This is test
- ログレベルの指定はない
- パッケージごとに個別のロガーを構成をすることはできない
- デフォルトでは「日付と時刻」がメッセージのプレフィックスに含まれる
ログ出力と同時にプログラム終了
log.Fatal("ログを出力して、プログラム終了となる")
fmt.Print("このログは出力されない")
log.Panic("ログとスタックトレースを出力して、プログラム終了となる")
fmt.Print("このログは出力されない")
ログのプリフィックス
log.SetPrefix("method_name(): ")
log.Print("ただのPrint()")
log.Fatal("こっちはFatal()")
実行
method_name(): 2021/07/27 08:51:33 ただのPrint()
method_name(): 2021/07/27 08:51:33 こっちはFatal()
exit status 1
ログのファイル出力
file, err := os.OpenFile("test.log", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644)
if err != nil {
log.Fatal(err)
}
defer file.Close()
log.SetOutput(file)
log.Print("This is test")
ログのフレームワーク
使用例
インストール
go get -u github.com/rs/zerolog/log
使用
package main
import (
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
)
func main() {
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
log.Debug().
Int("AccountId", 157).
Msg("Got account")
log.Debug().
Str("Name", "Ryo").
Send()
}
{"level":"debug","EmployeeID":157,"time":1627344471,"message":"Got account"}
{"level":"debug","Name":"Ryo","time":1627344471}
Discussion