Golang zap和lumberjack实现日志存储和自动管理

期望实现功能

按不同的日志级别存储到不同的日志文件中(这里只实现了info和error级别)

控制最多保留的日志文件及保留最近多少天的日志文件(控制日志的最大磁盘使用量)

控制每个日志文件的大小

 

我们使用zap和lumberjack框架实现

go get -u go.uber.org/zap
go get gopkg.in/natefinch/lumberjack.v2

 

lumberjack的Logger结构体如下
type Logger struct {
	//写日志的文件名称
	Filename string `json:"filename" yaml:"filename"`


	//每个日志文件长度的最大大小,默认100M。
	MaxSize int `json:"maxsize" yaml:"maxsize"`


	//日志保留的最大天数(只保留最近多少天的日志)
	MaxAge int `json:"maxage" yaml:"maxage"`


	//只保留最近多少个日志文件,用于控制程序总日志的大小
	MaxBackups int `json:"maxbackups" yaml:"maxbackups"`


	//是否使用本地时间,默认使用UTC时间
	LocalTime bool `json:"localtime" yaml:"localtime"`


	// 是否压缩日志文件,压缩方法gzip
	Compress bool `json:"compress" yaml:"compress"`

	size int64   //记录当前日志文件的字节数
	file *os.File  //当前的日志文件
	mu   sync.Mutex

	millCh    chan bool
	startMill sync.Once
}

lumberjack的使用及源码可参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值