https://github.com/uber-go/zap
package main
import (
"encoding/json"
"log"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
func main() {
rawJSON := []byte(`{
"level": "debug",
"encoding": "json",
"outputPaths": ["stdout", "./log.txt"],
"errorOutputPaths": ["stderr", "./err.txt"]
}`)
var cfg zap.Config
if err := json.Unmarshal(rawJSON, &cfg); err != nil {
panic(err)
}
cfg.EncoderConfig = zap.NewProductionEncoderConfig()
cfg.EncoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
logger, err := cfg.Build()
if err != nil {
log.Fatal("init logger error: ", err)
}
defer logger.Sync()
logger.Info("logger construction succeeded",
zap.String("url", "http://example.com"),
zap.Int("attempt", 3),
)
}