Go日志插件介绍-zap如何使用

279 阅读1分钟

Go日志插件介绍-zap如何使用

安装

go get -u go.uber.org/zap

快速开始

logger, _ := zap.NewProduction()
defer logger.Sync() // flushes buffer, if any
sugar := logger.Sugar()
sugar.Infow("failed to fetch URL",
  // Structured context as loosely typed key-value pairs.
  "url", url,
  "attempt", 3,
  "backoff", time.Second,
)
sugar.Infof("Failed to fetch URL: %s", url)

日志拆分配置

可以根据不同系统,区服不同的配置,比如日志大小等等

// +build !windows

package utils

import (
   zaprotatelogs "github.com/lestrrat-go/file-rotatelogs"
   "go.uber.org/zap/zapcore"
   "path"
   "time"
)

//@function: GetWriteSyncer
//@description: zap logger中加入file-rotatelogs
//@return: zapcore.WriteSyncer, error

func GetWriteSyncer() (zapcore.WriteSyncer, error) {
   fileWriter, err := zaprotatelogs.New(
      path.Join("logs", "%Y-%m-%d.log"),
      //zaprotatelogs.WithLinkName("latest_log"),
      zaprotatelogs.WithMaxAge(30*24*time.Hour),
      zaprotatelogs.WithRotationTime(24*time.Hour),
      zaprotatelogs.WithRotationSize(32*1024*1024),
   )
   return zapcore.NewMultiWriteSyncer(zapcore.AddSync(fileWriter)), err
}