zap.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package config
  2. import (
  3. "go.uber.org/zap/zapcore"
  4. "strings"
  5. )
  6. type Zap struct {
  7. Level string `mapstructure:"level" json:"level" yaml:"level"` // 级别
  8. Prefix string `mapstructure:"prefix" json:"prefix" yaml:"prefix"` // 日志前缀
  9. Format string `mapstructure:"format" json:"format" yaml:"format"` // 输出
  10. Director string `mapstructure:"director" json:"director" yaml:"director"` // 日志文件夹
  11. EncodeLevel string `mapstructure:"encode-level" json:"encode-level" yaml:"encode-level"` // 编码级
  12. StacktraceKey string `mapstructure:"stacktrace-key" json:"stacktrace-key" yaml:"stacktrace-key"` // 栈名
  13. MaxAge int `mapstructure:"max-age" json:"max-age" yaml:"max-age"` // 日志留存时间
  14. ShowLine bool `mapstructure:"show-line" json:"show-line" yaml:"show-line"` // 显示行
  15. LogInConsole bool `mapstructure:"log-in-console" json:"log-in-console" yaml:"log-in-console"` // 输出控制台
  16. }
  17. // ZapEncodeLevel 根据 EncodeLevel 返回 zapcore.LevelEncoder
  18. // Author [SliverHorn](https://github.com/SliverHorn)
  19. func (z *Zap) ZapEncodeLevel() zapcore.LevelEncoder {
  20. switch {
  21. case z.EncodeLevel == "LowercaseLevelEncoder": // 小写编码器(默认)
  22. return zapcore.LowercaseLevelEncoder
  23. case z.EncodeLevel == "LowercaseColorLevelEncoder": // 小写编码器带颜色
  24. return zapcore.LowercaseColorLevelEncoder
  25. case z.EncodeLevel == "CapitalLevelEncoder": // 大写编码器
  26. return zapcore.CapitalLevelEncoder
  27. case z.EncodeLevel == "CapitalColorLevelEncoder": // 大写编码器带颜色
  28. return zapcore.CapitalColorLevelEncoder
  29. default:
  30. return zapcore.LowercaseLevelEncoder
  31. }
  32. }
  33. // TransportLevel 根据字符串转化为 zapcore.Level
  34. // Author [SliverHorn](https://github.com/SliverHorn)
  35. func (z *Zap) TransportLevel() zapcore.Level {
  36. z.Level = strings.ToLower(z.Level)
  37. switch z.Level {
  38. case "debug":
  39. return zapcore.DebugLevel
  40. case "info":
  41. return zapcore.InfoLevel
  42. case "warn":
  43. return zapcore.WarnLevel
  44. case "error":
  45. return zapcore.ErrorLevel
  46. case "dpanic":
  47. return zapcore.DPanicLevel
  48. case "panic":
  49. return zapcore.PanicLevel
  50. case "fatal":
  51. return zapcore.FatalLevel
  52. default:
  53. return zapcore.DebugLevel
  54. }
  55. }