環境
go.uber.org/zap v1.25.0
やりたいこと
デフォルトで、"ts":1720662061.1188495
となっている部分を JST(e.g. "2024-07-11T12:56:52+09:00"
) で出したい。
{"level":"info","ts":1720662061.1188495,"caller":"xxx","msg":"xxx"}
コード
package config は環境により異なります。
package config
import (
"os"
"time"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
func ZapConfig(app *newrelic.Application) *zap.Logger {
core := createZapCore()
return zap.New(
core,
zap.AddCaller(),
zap.AddStacktrace(zapcore.ErrorLevel),
)
}
func createZapCore() zapcore.Core {
encodingConfig := zap.NewProductionEncoderConfig()
encodingConfig.EncodeTime = jstTimeEncoder
return zapcore.NewCore(
zapcore.NewJSONEncoder(encodingConfig),
zapcore.AddSync(os.Stdout),
zap.InfoLevel,
)
}
func jstTimeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
jst := time.FixedZone("Asia/Tokyo", 9*60*60)
enc.AppendString(t.In(jst).Format(time.RFC3339))
}
ログの ts
が JST(e.g. "2024-07-11T12:56:52+09:00"
) であることを確認。
{"level":"info","ts":"2024-07-11T12:56:52+09:00","caller":"xxx","msg":"Logger","status":200,"method":"GET","path":"/swagger/doc.json","query":"","ip":"192.168.65.1","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36","elapsed":0.002561916}