Golang日志框架lumberjack包源码分析

github地址:  https://github.com/natefinch/lumberjack

 

获取源码

go get gopkg.in/natefinch/lumberjack.v2

 

介绍

       lumberjack用于记录日志,但是它可以控制每个日志文件的大小,以及可以按规则删除历史的日志文件,甚至可以对历史的日志文件进行压缩.

       Logger会首先打开或创建logFile文件,如果logFile文件已存在并且该文件的大小没有超过设置的MaxSize,就会在打开该文件并进行追加日志。否则会创建新的日志文件。

      当前日志文件超过MaxSize MB,就会关闭当前文件,并将其重命名,并使用原始名称创建一个新的日志文件。因此,最新的日志输出都在原始名称的文件中。

 

保留的日志文件

存留的历史文件名称为:name-timestamp.ext  [name是给定的文件名,timestamp是日志轮换格式的时间(2006-01-02T15-04-05.000)]

 

清理旧的日志文件策略

 每当创建新的日志文件时,旧的日志文件都可能被删除。删除会根据MaxAge和MaxBackups的参数设置

 1. 时间戳早于MaxAge天的文件都会被删除,如果MaxAge为0,则不会根据MaxAge删除日志文件

 2. MaxBackups是要保留的最大旧日志文件数,用来控制该程序日志文件的最大大小。早于MaxBackups数之前的文件都会被删除,如果MaxBackups为0,则不会根据MaxBackups进行删除日志文件

 3. 如果MaxAge 和 MaxBackups都为0,则不会删除日志文件

 

源码分析

    核心结构体Logger

type Logger struct {
	// Filename is the file to write logs to.  Backup log files will be retained
	// in the same directory.  It uses <processname>-lumberjack.log in
	// os.TempDir() if empty.
	//写日志的文件名称
	Filename string `json:"filename
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值