package log import ( "go.uber.org/zap" "go.uber.org/zap/zapcore" "os" "time" ) var ( zapLogger *zap.Logger ZapLog *zap.Logger Debug = zapLogger.Debug Info = zapLogger.Info Warn = zapLogger.Warn Error = zapLogger.Error Fatal = zapLogger.Fatal ) func newEncoderConfig() zapcore.EncoderConfig { return zapcore.EncoderConfig{ // Keys can be anything except the empty string. TimeKey: "T", LevelKey: "L", NameKey: "N", CallerKey: "C", MessageKey: "M", StacktraceKey: "S", LineEnding: zapcore.DefaultLineEnding, EncodeLevel: zapcore.CapitalLevelEncoder, EncodeTime: timeEncoder, EncodeDuration: zapcore.StringDurationEncoder, EncodeCaller: zapcore.ShortCallerEncoder, } } func init() { core := zapcore.NewCore( zapcore.NewConsoleEncoder(newEncoderConfig()), zapcore.NewMultiWriteSyncer(zapcore.AddSync(os.Stdout)), zap.DebugLevel, ) zapLogger = zap.New(core, zap.AddCaller()) ZapLog = zapLogger Debug = zapLogger.Debug Info = zapLogger.Info Warn = zapLogger.Warn Error = zapLogger.Error Fatal = zapLogger.Fatal } func timeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder) { enc.AppendString(t.Format("2006-01-02 15:04:05")) } type Field = zap.Field func Any(key string, value interface{}) Field { return zap.Any(key, value) } func E(err error) Field { return Any("err", err) }