go语言高性能日志库 zap

文章介绍了如何在Go应用中安装和使用Zap日志库,包括创建生产环境和开发环境的日志实例,以及SugaredLogger和Logger两种类型的区别。SugaredLogger适合非关键场景,提供结构化和printf风格日志,而Logger则在性能和内存优化上更胜一筹,专为高性能环境设计。示例还展示了如何将日志写入文件。
摘要由CSDN通过智能技术生成

安装

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)
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值