golang有用的库及工具 之 zap.Logger包 使用

zap.Logger  是go语言中相对日志库中性能最高的。那么如何开始使用?不多说直接上代码:


import (
   "encoding/json"
   "fmt"
   "log"

   "go.uber.org/zap"
   "go.uber.org/zap/zapcore"
)

var Logger *zap.Logger

func InitLogger() {
   // 日志地址 "out.log" 自定义
   lp := Conf.Common.LogPath
   // 日志级别 DEBUG,ERROR, INFO
   lv := Conf.Common.LogLevel
   // 是否 DEBUG
   isDebug := true
   if Conf.Common.IsDebug != true {
      isDebug = false
   }
   initLogger(lp, lv, isDebug)
   log.SetFlags(log.Lmicroseconds | log.Lshortfile | log.LstdFlags)
}

func initLogger(lp string, lv string, isDebug bool) {
   var js string
   if isDebug {
      js = fmt.Sprintf(`{
      "level": "%s",
      "encoding": "json",
      "outputPaths": ["stdout"],
      "errorOutputPaths": ["stdout"]
      }`, lv)
   } else {
      js = fmt.Sprintf(`{
      "level": "%s",
      "encoding": "json",
      "outputPaths": ["%s"],
      "errorOutputPaths": ["%s"]
      }`, lv, lp, lp)
   }

   var cfg zap.Config
   if err := json.Unmarshal([]byte(js), &cfg); err != nil {
      panic(err)
   }
   cfg.EncoderConfig = zap.NewProductionEncoderConfig()
   cfg.EncoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
   var err error
   Logger, err = cfg.Build()
   if err != nil {
      log.Fatal("init logger error: ", err)
   }
}

如何使用:

func TestInitLogger(t *testing.T) {
   InitLogger("out.log", "DEBUG", false)
   s := []string{
      "hello info",
      "hello error",
      "hello debug",
      "hello fatal",
   }
   Log.Info("info:", zap.String("s", s[0]))
   Log.Error("info:", zap.String("s", s[1]))
   Log.Debug("info:", zap.String("s", s[2]))
   Log.Fatal("info:", zap.String("s", s[3]))
}


输出:

{"level":"info","ts":"2017-10-25 13:45:42.332","caller":"logger/logger_test.go:16","msg":"info:","s":"hello info"}
{"level":"error","ts":"2017-10-25 13:45:42.396","caller":"logger/logger_test.go:17","msg":"info:","s":"hello error","stacktrace":"go.uber.org/zap.Stack\n\tD:/gopath/src/go.uber.org/zap/field.go:191\ngo.uber.org/zap.(*Logger).check\n\tD:/gopath/src/go.uber.org/zap/logger.go:301\ngo.uber.org/zap.(*Logger).Error\n\tD:/gopath/src/go.uber.org/zap/logger.go:202\ngithub.com/corego/hermes/logger.TestInitLogger\n\tD:/gopath/src/github.com/corego/hermes/logger/logger_test.go:17\ntesting.tRunner\n\tD:/Program Files (x86)/go/src/testing/testing.go:746"}
{"level":"debug","ts":"2017-10-25 13:45:42.396","caller":"logger/logger_test.go:18","msg":"info:","s":"hello debug"}
{"level":"fatal","ts":"2017-10-25 13:45:42.396","caller":"logger/logger_test.go:19","msg":"info:","s":"hello fatal","stacktrace":"go.uber.org/zap.Stack\n\tD:/gopath/src/go.uber.org/zap/field.go:191\ngo.uber.org/zap.(*Logger).check\n\tD:/gopath/src/go.uber.org/zap/logger.go:301\ngo.uber.org/zap.(*Logger).Fatal\n\tD:/gopath/src/go.uber.org/zap/logger.go:235\ngithub.com/corego/hermes/logger.TestInitLogger\n\tD:/gopath/src/github.com/corego/hermes/logger/logger_test.go:19\ntesting.tRunner\n\tD:/Program Files (x86)/go/src/testing/testing.go:746"}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值