背景
项目部署中需要对日志文件定时清理,最简单的方法就是使用 linux 的 logrotate 工具。
rotate 的本意是循环、轮转、轮值的意思,加上 log,就很好理解了。
国外的程序员起名字是很直白和有趣的,所以研究 IT 技术查下本意也挺有意思。
配置
# truncate your log every day
# /etc/logrotate.d/myproject
/myproject_path/log/*.log {
daily # 每天执行
missingok # 出错也会继续执行下一个 rotate
rotate 7 # 保留几个备份(文件删除前)
compress # gizp 压缩
delaycompress # 第二次 rotate 才压缩,会有一份 xxx.log.1 生成
notifempty # 日志为空,则不 rotate
copytruncate # 对于打开中的日志文件,把当前日志备份并截断
su ruby ruby # 使用某用户执行 rotate
}
如果想提前执行,则执行命令即可
logrotate -f /etc/logrotate.d/myproject
生成的日志文件大致会是这样的样子
这些基本已经够用了,如果想知道更详细的参数,可参考
https://en.wikipedia.org/wiki/Log_rotation
https://www.linuxidc.com/Linux/2019-02/157099.htm