package logx import ( "fmt" "go.uber.org/zap" "go.uber.org/zap/zapcore" "time" ) type JsonLog struct { fields []zap.Field val string } // NewJsonLog 自定义添加log field. func NewJsonLog() Encoder { return &JsonLog{fields: make([]zap.Field, 0)} } // Config 自定义配置. func (slf *JsonLog) Config() zapcore.Encoder { var ( cfg = zap.NewProductionEncoderConfig() ) // 时间格式自定义 cfg.EncodeTime = func(t time.Time, enc zapcore.PrimitiveArrayEncoder) { enc.AppendString(t.Format("2006-01-02 15:04:05")) } // 打印路径自定义 cfg.EncodeCaller = func(caller zapcore.EntryCaller, encoder zapcore.PrimitiveArrayEncoder) { encoder.AppendString(getFilePath(caller)) } // 级别显示自定义 cfg.EncodeLevel = func(level zapcore.Level, encoder zapcore.PrimitiveArrayEncoder) { encoder.AppendString(level.String()) } return zapcore.NewJSONEncoder(cfg) } // WithKey 添加单个键. func (slf *JsonLog) WithKey(key string) Encoder { slf.val = slf.val + key + " " return slf } // WithField 添加字段. func (slf *JsonLog) WithField(key, val string) Encoder { slf.fields = append(slf.fields, zap.String(key, val)) return slf } func (slf *JsonLog) Debug(msg string) { _logger.Debug(slf.val+msg, slf.fields...) } func (slf *JsonLog) Debugf(format string, v ...interface{}) { _logger.Debug(fmt.Sprintf(slf.val+format, v...), slf.fields...) } func (slf *JsonLog) Info(msg string) { _logger.Info(slf.val+msg, slf.fields...) } func (slf *JsonLog) Infof(format string, v ...interface{}) { _logger.Info(fmt.Sprintf(slf.val+format, v...), slf.fields...) } func (slf *JsonLog) Warn(msg string) { _logger.Warn(slf.val+msg, slf.fields...) } func (slf *JsonLog) Warnf(format string, v ...interface{}) { _logger.Warn(fmt.Sprintf(slf.val+format, v...), slf.fields...) } func (slf *JsonLog) Error(msg string) { _logger.Error(slf.val+msg, slf.fields...) } func (slf *JsonLog) Errorf(format string, v ...interface{}) { _logger.Error(fmt.Sprintf(slf.val+format, v...), slf.fields...) } func (slf *JsonLog) Fatal(msg string) { _logger.Fatal(slf.val+msg, slf.fields...) } func (slf *JsonLog) Fatalf(format string, v ...interface{}) { _logger.Fatal(fmt.Sprintf(slf.val+format, v...), slf.fields...) }