概要
zapはgolangのloggerライブラリです。
golang標準パッケージのlogでは足りないログレベルや、JSONでの出力などをサポートしているため自分はこのライブラリをloggerとしてよく使っています。
他にもlogrusというライブラリも有名ですが、zapはlogrusに比べて高速に動きます。
JSTフォーマットでのTIME出力
日本で開発している以上、ログのタイムスタンプも日本時間で表示させたいところです。
zapでは、以下のようにすることでタイムスタンプの形式をJSTフォーマットで表示させることができます。
main.go
package main
import (
"time"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
func main (
encodeConfig := zap.NewProductionEncoderConfig()
encodeConfig.EncodeTime = JSTTimeEncoder
logger := zap.New(
zapcore.NewCore(zapcore.NewJSONEncoder(encodeConfig))
)
logger.Info("This is test.")
)
func JSTTimeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
const layout = "2006-01-02T15:04:05+09:00"
jst := time.FixedZone("Asia/Tokyo", 9*60*60)
enc.AppendString(t.In(jst).Format(layout))
}
log
{"level":"info","ts":"2016-12-21 12:20:34","msg":"This is test."}