1. 安装和基本使用
go get -u go.uber.org/zap
package mainimport ("go.uber.org/zap")func main() {logger, _ := zap.NewProduction()defer logger.Sync() // flushes buffer, if anyurl := "https://imooc.com"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 Logger和Logger。
在性能很好但不是很关键的上下文中,使用SugaredLogger。它比其他结构化日志记录包快4-10倍,并且支持结构化和printf风格的日志记录。
在每一微秒和每一次内存分配都很重要的上下文中,使用Logger。它甚至比SugaredLogger更快,内存分配次数也更少,但它只支持强类型的结构化日志记录
2. 写入日志文件
package mainimport ("go.uber.org/zap""time")func NewLogger() (*zap.Logger, error) {cfg := zap.NewProductionConfig()cfg.OutputPaths = []string{"./myproject.log",}return cfg.Build()}func main() {//logger, _ := zap.NewProduction()logger, err := NewLogger()if err != nil {panic(err)//panic("初始化logger失败")}su := logger.Sugar()defer su.Sync()url := "https://imooc.com"su.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),)}
