go语言高性能日志库 zap

安装

go get -u go.uber.org/zap

使用

package main

import (
	"go.uber.org/zap"
)

func main() {
	logger, _ := zap.NewProduction() // 生产环境
	//logger, _ := zap.NewDevelopment()
	defer logger.Sync() // flushes buffer, if any
	url := "https://imooc.com"
	//logger.Info("failed to fetch URL",
	//	zap.String("url", url),
	//	zap.Int("nums", 3))
	sugar := logger.Sugar()
	sugar.Infow("failed to fetch URL",
		// Structured context as loosely typed key-value pairs.
		"url", url,
		"attempt", 3,
	)
	sugar.Infof("Failed to fetch URL: %s", url)
}

Zap提供了两种类型的日志记录器—Sugared LoggerLogger

在性能很好但不是很关键的上下文中,使用SugaredLogger。它比其他结构化日志记录包快4-10倍,并且支持结构化和printf风格的日志记录。

在每一微秒和每一次内存分配都很重要的上下文中,使用Logger。它甚至比SugaredLogger更快,内存分配次数也更少,但它只支持强类型的结构化日志记录

日志写入文件

package main

import (
	"go.uber.org/zap"
)

func main() {
	logger, _ := zap.NewProduction() // 生产环境
	//logger, _ := zap.NewDevelopment()
	defer logger.Sync() // flushes buffer, if any
	url := "https://imooc.com"
	//logger.Info("failed to fetch URL",
	//	zap.String("url", url),
	//	zap.Int("nums", 3))
	sugar := logger.Sugar()
	sugar.Infow("failed to fetch URL",
		// Structured context as loosely typed key-value pairs.
		"url", url,
		"attempt", 3,
	)
	sugar.Infof("Failed to fetch URL: %s", url)
}

猜你喜欢

转载自blog.csdn.net/pzl_pzl/article/details/130685947