目的
Uberの提供するOSSのGo言語用Loggerのzapの導入と利用方法を簡単に説明する。
備忘録的に概要を記述しているだけなので、
詳細は、公式リポジトリ、user-go/zapを参照すること
インストール
zapの導入
$ go get -u go.uber.org/zap
ロガーの記述方法
サンプルコード
import (
"go.uber.org/zap"
)
// 〜〜〜省略〜〜〜
logger, _ := zap.NewProduction()
defer logger.Sync()
logger.Info("Response received.",
zap.Time("timestamp", response.Timestamp),
zap.String("url", response.URL),
zap.String("method", response.Method),
zap.Int("status_code", response.StatusCode),
zap.Int("response_time", response.ResponseTime))
logger, _ := zap.NewProduction()
でロガーを生成。
defer logger.Sync()
で関数を抜ける際にログをフラッシュしてバッファに残っている
ログレコードを書き込む模様。
logger.Info
でInfoレベルでログを書き込み、他にもWarn
など一般的なログレベルを指定して出力できるようになっている。
関数の引数として、ログメッセージ(msg)を指定する。
zap.型
で型を指定してログレコードに付与する各種情報を出力する。
ログの出力例
{"level":"info","ts":1569769104.776992,"caller":"client/http_client.go:38","msg":"Response received.","timestamp":1569769104.5155523,"url":"http://web.ryoma0923.work/","method":"GET","status_code":200,"response_time":260}
ログはLDJSON(Line Delimited JSON)で出力される。