json.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package logx
  2. import (
  3. "fmt"
  4. "go.uber.org/zap"
  5. "go.uber.org/zap/zapcore"
  6. "time"
  7. )
  8. type JsonLog struct {
  9. fields []zap.Field
  10. val string
  11. }
  12. // NewJsonLog 自定义添加log field.
  13. func NewJsonLog() Encoder {
  14. return &JsonLog{fields: make([]zap.Field, 0)}
  15. }
  16. // Config 自定义配置.
  17. func (slf *JsonLog) Config() zapcore.Encoder {
  18. var (
  19. cfg = zap.NewProductionEncoderConfig()
  20. )
  21. // 时间格式自定义
  22. cfg.EncodeTime = func(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
  23. enc.AppendString(t.Format("2006-01-02 15:04:05"))
  24. }
  25. // 打印路径自定义
  26. cfg.EncodeCaller = func(caller zapcore.EntryCaller, encoder zapcore.PrimitiveArrayEncoder) {
  27. encoder.AppendString(getFilePath(caller))
  28. }
  29. // 级别显示自定义
  30. cfg.EncodeLevel = func(level zapcore.Level, encoder zapcore.PrimitiveArrayEncoder) {
  31. encoder.AppendString(level.String())
  32. }
  33. return zapcore.NewJSONEncoder(cfg)
  34. }
  35. // WithKey 添加单个键.
  36. func (slf *JsonLog) WithKey(key string) Encoder {
  37. slf.val = slf.val + key + " "
  38. return slf
  39. }
  40. // WithField 添加字段.
  41. func (slf *JsonLog) WithField(key, val string) Encoder {
  42. slf.fields = append(slf.fields, zap.String(key, val))
  43. return slf
  44. }
  45. func (slf *JsonLog) Debug(msg string) {
  46. _logger.Debug(slf.val+msg, slf.fields...)
  47. }
  48. func (slf *JsonLog) Debugf(format string, v ...interface{}) {
  49. _logger.Debug(fmt.Sprintf(slf.val+format, v...), slf.fields...)
  50. }
  51. func (slf *JsonLog) Info(msg string) {
  52. _logger.Info(slf.val+msg, slf.fields...)
  53. }
  54. func (slf *JsonLog) Infof(format string, v ...interface{}) {
  55. _logger.Info(fmt.Sprintf(slf.val+format, v...), slf.fields...)
  56. }
  57. func (slf *JsonLog) Warn(msg string) {
  58. _logger.Warn(slf.val+msg, slf.fields...)
  59. }
  60. func (slf *JsonLog) Warnf(format string, v ...interface{}) {
  61. _logger.Warn(fmt.Sprintf(slf.val+format, v...), slf.fields...)
  62. }
  63. func (slf *JsonLog) Error(msg string) {
  64. _logger.Error(slf.val+msg, slf.fields...)
  65. }
  66. func (slf *JsonLog) Errorf(format string, v ...interface{}) {
  67. _logger.Error(fmt.Sprintf(slf.val+format, v...), slf.fields...)
  68. }
  69. func (slf *JsonLog) Fatal(msg string) {
  70. _logger.Fatal(slf.val+msg, slf.fields...)
  71. }
  72. func (slf *JsonLog) Fatalf(format string, v ...interface{}) {
  73. _logger.Fatal(fmt.Sprintf(slf.val+format, v...), slf.fields...)
  74. }