LoginSignup
14
8

More than 3 years have passed since last update.

golang zap v1.0.0 でログの日付をJSTで表示する方法

Last updated at Posted at 2016-12-21

概要

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."}
14
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
8