玩转高性能日志库zap (1)
版权声明 本站原创文章 由 萌叔 发表 转载请注明 萌叔 | http://vearne.cc 前言 uber开源的高性能日志库zap, 除了性能远超logrus之外,还有很多诱人的功能,比如支持数据采样、支持通过HTTP服务动态调整日志级别 参考资料1虽然提到了可以通过HTTP服务动态调整日志级别,但是没有给出可用的代码实现,这里给出一个样例。 动态调整日志级别 非常简单直接上代码 package main import ( "fmt" "go.uber.org/zap" "net/http" "time" ) func main() { alevel := zap.NewAtomicLevel() http.HandleFunc("/handle/level", alevel.ServeHTTP) go func() { if err := http.ListenAndServe(":9090", nil); err != nil { panic(err) } }() // 默认是Info级别 logcfg := zap.NewProductionConfig() logcfg.Level = alevel logger, err := logcfg.Build() if err != nil { fmt.Println("err", err) } defer logger.Sync() for i := 0; i < 1000; i++ { time.Sleep(1 * time.Second) logger.Debug("debug log", zap.String("level", alevel.String())) logger.Info("Info log", zap.String("level", alevel.String())) } } 查看日志级别 ...