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