其他分享
首页 > 其他分享> > zap 学习笔记

zap 学习笔记

作者:互联网

zap

zap 是 uber 提供的 一个高性能的组件库

结构

01

一条结构化的日志大致包含5个过程:

核心部分:

代码

demo

func main() {
	logger, _ := zap.NewProduction()
	// 生产配置信息
	defer logger.Sync()
	// flush 
	logger.Info("failed to fetch URL",
		// Structured context as strongly typed Field values.
		zap.String("url", "127.0.0.1"),
		zap.Int("attempt", 3),
		zap.Duration("backoff", time.Second),
	)
}

核心代码

func (log *Logger) Info(msg string, fields ...Field) {
	if ce := log.check(InfoLevel, msg); ce != nil {
		// 检查是否需要写入日志
		ce.Write(fields...)
	}
}
func (ce *CheckedEntry) Write(fields ...Field) {
	......

	// 写日志
	for i := range ce.cores {
		err = multierr.Append(err, ce.cores[i].Write(ce.Entry, fields))
	}

	// ce.cores[i].Write(ce.Entry, fields)
	// 先获取 encode 然后 write
	....
}	

标签:Write,fields,ce,学习,笔记,日志,logger,zap
来源: https://www.cnblogs.com/SLchuck/p/14252506.html