Golang日志轮转实现方法

作者:技术拾光

时间:2026-07-12

浏览:124

Golang中利用lumberjack库可轻松实现日志轮转,配置简洁。只需设置日志路径、单个文件最大大小、备份数、保留天数及压缩选项,lumberjack便会自动完成文件轮转、压缩旧日志并清理过期备份。

文章目录

在 Golang 中实现日志轮转,可以借助成熟的第三方库简化开发流程。lumberjack 凭借简洁的配置与开箱即用的特性,成为常用选择。以下详细说明其使用步骤。

Golang日志轮转实现方法

安装 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。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章