ZAP使用
uber开源高性能日志库
一、快速开始
1.非结构化
性能比结构化的要差(性能比较:https://github.com/uber-go/zap)
(1)友好的日志打印
url := "https://www.baidu.com"
logger, _ := zap.NewDevelopment()
defer logger.Sync()
sugar := logger.Sugar()
sugar.Infow("failed to fetch URL",
"url", url,
"attempt", 3,
"backoff", time.Second,
)
sugar.Infof("Failed to fetch URL: %s", url)
控制台
- 2019-06-26T15:05:15.564+0800 INFO stuzap/main.go:13 failed to fetch URL {“url”: “https://www.baidu.com”, “attempt”: 3, “backoff”: “1s”}
- 2019-06-26T15:05:15.591+0800 INFO stuzap/main.go:18 Failed to fetch URL: https://www.baidu.com
(2)易于程序识别的格式
url := "https://www.baidu.com"
logger, _ := zap.NewProduction()
defer logger.Sync()
sugar := logger.Sugar()
sugar.Infow("failed to fetch URL",
"url", url,
"attempt", 3,
"backoff", time.Second,
)
sugar.Infof("Failed to fetch URL: %s", url)
控制台
- {“level”:“info”,“ts”:1561532757.6966326,“caller”:“stuzap/main.go:13”,“msg”:“failed to fetch URL”,“url”:“https://www.baidu.com”,“attempt”:3,“backoff”:1}
- {“level”:“info”,“ts”:1561532757.6966326,“caller”:“stuzap/main.go:18”,“msg”:“Failed to fetch URL: https://www.baidu.com”}
2.结构化
性能优于非结构化(性能比较https://github.com/uber-go/zap)
(1)友好的日志打印
url := "https://www.baidu.com"
logger, _ := zap.NewDevelopment()
defer logger.Sync()
logger.Info("failed to fetch URL",
// Structured context as strongly typed Field values.
zap.String("url", url),
zap.Int("attempt", 3),
zap.Duration("backoff", time.Second),
)
控制台
- 2019-06-26T15:09:17.333+0800 INFO stuzap/main.go:12 failed to fetch URL {“url”: “https://www.baidu.com”, “attempt”: 3, “backoff”: “1s”}
(2)易于程序识别的格式
url := "https://www.baidu.com"
logger, _ := zap.NewProduction()
defer logger.Sync()
logger.Info("failed to fetch URL",
// Structured context as strongly typed Field values.