本篇文章为大家展示了如何打造Zap开箱即用日志组件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
logrus 是 golang 一款非常优秀的日志框架, 其优点非常明显:
但是, 性能终究是忍痛舍弃 logrus 的“阿喀琉斯之踵”, 前面的文章深入研究了 logrus 性能低的原因
目前 golang 日志库的大众选择主要集中在: logrus, zap, zerolog. zap 和 zerolog 的性能都是优秀的, 但是从用法习惯上我更倾向于 zap.
Zap 提供三种不同方式的输出(以 Info为 例)
log.Info("hello zap") // {"level":"info","ts":1576423173.016333,"caller":"test_zap/main.go:28","msg":"hello zap"}
log.Infof("hello %s", "zap") // {"level":"info","ts":1576423203.056074,"caller":"test_zap/main.go:29","msg":"hello zap"}
log.Infow("hello zap", "field1", "value1") //{"level":"info","ts":1576423203.0560799,"caller":"test_zap/main.go:30","msg":"hello zap","field1":"value1"}
如果我们对 logrus 的 key-value 理论比较在意的话, 使用 zap infow 可以完美解决
基于这些问题, 我封装了一套开箱即用的日志组件: https://github.com/georgehao/log
提供的功能:
go get github.com/georgehao/log
package main
import "github.com/georgehao/log"
func main() {
// init log
// set absolute path, and level
// set output level
// don't need request log
// set log's caller using logOption
log.Init("./test.log", log.DebugLevel, false, log.SetCaller(true))
log.Info("hello george log")
// flush
log.Sync()
//output: {"level":"info","ts":"2019-12-16T10:37:11.364+0800","caller":"example/example.go:12","msg":"hello george log"}
}
上述内容就是如何打造Zap开箱即用日志组件,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。