Golang中利用lumberjack库可轻松实现日志轮转,配置简洁。只需设置日志路径、单个文件最大大小、备份数、保留天数及压缩选项,lumberjack便会自动完成文件轮转、压缩旧日志并清理过期备份。
Golang日志轮转实现方法
作者:技术拾光
时间:2026-07-12
浏览:124
文章目录
在 Golang 中实现日志轮转,可以借助成熟的第三方库简化开发流程。lumberjack 凭借简洁的配置与开箱即用的特性,成为常用选择。以下详细说明其使用步骤。

安装 lumberjack
通过 Go 模块管理工具安装,在终端执行一条命令即可:
go get github.com/natefinch/lumberjack
导入所需包
在代码中同时导入标准库 log 与 lumberjack:
package main
import (
"log"
"github.com/natefinch/lumberjack"
)
配置日志轮转参数
创建一个 lumberjack.Logger 实例,并将其设置为 log 包的输出目标。通过参数控制日志文件路径、单个文件最大容量、保留备份数、最大保留天数以及是否压缩旧日志:
func main() {
log.SetOutput(&lumberjack.Logger{
Filename: "logs/myapp.log", // 日志文件路径
MaxSize: 1, // 单个文件最大大小(MB)
MaxBackups: 3, // 保留的备份文件数量
MaxAge: 28, // 保留的天数
Compress: true, // 是否压缩旧日志
})
}
写入日志并自动轮转
之后正常使用 log 库记录日志。当文件大小、数量或保存时间达到设定阈值时,lumberjack 会自动完成轮转——创建新文件、将旧日志压缩为 .gz 格式,并清理过期备份:
func main() {
log.SetOutput(&lumberjack.Logger{
Filename: "logs/myapp.log",
MaxSize: 1,
MaxBackups: 3,
MaxAge: 28,
Compress: true,
})
log.Println("This is a log message.")
}
例如,当 myapp.log 增长至 1MB 时,lumberjack 会自动创建新文件,旧文件被压缩为 .gz 并保留最多 3 个备份,超过 28 天的日志将被自动删除。
上述参数可根据实际需求灵活调整。更多配置项详情可参考官方文档:https://github.com/natefinch/lumberjack。
实用工具推荐
电子包浆
使用 ›绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
图片压缩
使用 ›选择画质和输出格式,预览压缩前后的大小。
相关文章