Go 标准库 log 不支持日志轮转,需用第三方库:lumberjack 适合按大小轮转(如 100MB/个,保留 7 个+28 天),file-rotatelogs 适合按日期轮转(如 daily,带软链和精确时间控制)。

Go 标准库的 log 包本身不支持日志轮转(如按日期或文件大小自动切分),需借助第三方库或手动实现。最常用、稳定且轻量的方案是使用 github.com/lestrrat-go/file-rotatelogs(推荐)或 gopkg.in/natefinch/lumberjack.v2。下面分别说明两种主流方式,覆盖按时间(日期)和按大小轮转的典型场景。
适合:对日志时效性要求不高,更关注单个文件体积控制(如限制每个日志 ≤ 100MB,最多保留 7 个旧文件)
lumberjack 是一个简单可靠的日志切割器,常与标准 log 或 zap 等搭配使用:
go get gopkg.in/natefinch/lumberjack.v2
import (
"log"
"os"
"gopkg.in/natefinch/lumberjack.v2"
)
func main() {
logger := log.New(&lumberjack.Logger{
Filename: "./logs/app.log",
MaxSize: 100, // MB
MaxBackups: 7, // 最多保留 7 个旧文件
MaxAge: 28, // 保留 28 天(即使没到 MaxBackups)
Compress: true, // 启用 gzip 压缩(.gz)
}, "", log.LstdFlags)
logger.Println("This is a log message")
}
注意:MaxAge 和 MaxBackups 是独立触发条件,任一满足即清理旧日志;Compress=true 会自动压缩归档文件(需 Go 1.16+)。
适合:需要严格按日期归档(如 app-2025-05-20.log),便于按天检索、对接日志系统
千鹿Pr助手
智能Pr插件,融入众多AI
功能和海量素材
163
查看详情
file-rotatelogs 支持基于时间的精确轮转(秒/分/时/日),并可结合 logrus 或 zap 使用:
go get github.com/lestrrat-go/file-rotatelogs
import (
"log"
"time"
rotatelogs "github.com/lestrrat-go/file-rotatelogs"
"gopkg.in/natefinch/lumberjack.v2" // 可选:仅用于压缩,rotatelogs 本身不压缩
)
func main() {
writer, _ := rotatelogs.New(
"./logs/app-%Y-%m-%d.log", // 模板:%Y=年,%m=月,%d=日
rotatelogs.WithLinkName("./logs/app.log"), // 创建软链指向最新日志
rotatelogs.WithRotationTime(24*time.Hour), // 每 24 小时轮转一次
rotatelogs.WithMaxAge(7*24*time.Hour), // 保留最近 7 天
rotatelogs.WithRotationCount(7), // 最多存 7 个文件(与 MaxAge 二者取严)
)
logger := log.New(writer, "", log.LstdFlags)
logger.Println("Log written to dated file")
}
提示:WithLinkName 很实用——始终有 app.log 软链接指向当天日志,方便 tail -f;若需压缩,可额外用 lumberjack 封装 writer,或自行调用 os/exec 执行 gzip。
单一工具难兼顾所有需求。实际项目中建议:
lumberjack:简单、无依赖、稳定,适合大多数后端服务file-rotatelogs
启动程序后,执行以下操作观察行为:
ls -lt logs/ 看文件时间顺序,tail -f logs/app.log 确认输出流向正确文件以上就是如何使用Golang实现日志文件轮转_按日期或大小切分日志的详细内容,更多请关注其它相关文章!
# go
# github
# golang
# app
# 工具
# 后端
# ai
# git
# 花都旅游口碑营销推广
# 网站推广相关知识
# 红酒seo怎么做
# seo爵士舞
# 潍坊网站推广行者seo06
# 开平seo搜索排名公司
# 辽宁整站seo优化
# 肇庆企业网站推广软件
# 帐篷如何营销推广文案
# 建网站后如何推广产品
# 内网
# 何为
# 第三方
# 不支持
# 最多
# 个旧
# 如何使用
# 按日
# 切分
# 标准库
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
怎样让Windows 11的开始菜单恢复经典样式_Open-Shell工具使用指南【怀旧】
食品生产用水只要符合国家规定的生活饮用水卫生标准就可以吗
基于键值条件高效映射 Pandas DataFrame 多列数据
告别繁琐SEO!如何使用SyliusSitemap插件自动化生成网站地图,提升搜索引擎排名
在PySimpleGUI中实现键盘按键绑定按钮事件
Yandex无需登录畅游 俄罗斯搜索引擎最新官网指南
高德地图导航路线偏差报警频繁怎么办 高德地图路线偏差修复与优化方法
c++20的指定初始化(Designated Initializers)怎么用_c++ C风格结构体初始化
QQ邮箱PC端登录页面_QQ邮箱网页版登录界面
《合金装备4》有望推出重制版!制作人发话了
12306售票时间最新规定 | 网上订票和车站窗口时间一样吗
我居然低估了 DeepSeek,这次更新它做到了这些!
韩小圈网页版PC端入口 韩小圈网页版官方网站入口
《撕歌》会员开通方法
铁路12306官网入口 铁路12306中国铁路官网登录首页
免费占卜在线神算_免费占卜手机神算
CSS如何控制元素外边距_margin实现布局间隔
b站网页版入口 哔哩哔哩官方网站直接进入
Python定时发送QQ消息
火狐浏览器如何刷新修复浏览器 火狐浏览器“重置Firefox”功能详解
《偃武》甘宁技能详解
如何快速去除厨房重油污? 2025年最好用的厨房清洁剂推荐
阿里旺旺电脑网页版入口 阿里旺旺电脑版网页登录入口
CSS绝对定位与溢出控制:实现背景元素局部显示不触发滚动条
WPS文字如何进行简繁转换
鼠标没反应了怎么办 无线/有线鼠标失灵的解决方法【详解】
《火花chat》搜索好友方法
J*aScript桌面应用_Electron多进程架构实战
VS Code快捷键when上下文子句的妙用
德邦快递收费标准详解
《小宇宙》标记不友善评论方法
快手缓存清理方法
跨语言测试实践:使用Python Selenium测试现有J*a Web项目
发布小红书怎么屏蔽粉丝?屏蔽粉丝能看到吗?
excel怎么制作考勤表 excel考勤模板与函数公式讲解
Go App Engine 项目结构与包管理深度指南
驱动人生:游戏修复指南
mysql如何回滚事务_mysql ROLLBACK事务回滚方法
Sublime怎么配置YAML文件格式化_Sublime YAML Formatter插件教程
如何在解析前预检查XML文件的完整性? 比如检查文件大小或特定结束标签
优酷下载视频的清晰度怎么选_优酷缓存清晰度设置与选择指南
C++如何实现单例模式_C++线程安全的单例模式写法
谷歌浏览器如何查找和删除恶意软件 谷歌浏览器内置安全清理工具使用教程
风神瞳获取全攻略
可米酷漫画在线阅读入口_ 可米酷漫画官网直达链接
PHP utf8_encode 字符编码转换陷阱与解决方案
Win11如何分屏操作_Win11多窗口分屏技巧
Apple Music无故扣费引质疑
解决异步Python机器人中同步操作的阻塞问题
苹果17 Pro如何启用分屏浏览_iPhone 17 Pro分屏浏览设置步骤
2025-12-18
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。