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
}