linux 如何自动清理日志文件-logrotate

背景

项目部署中需要对日志文件定时清理,最简单的方法就是使用 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

posted @ 2022-10-29 11:07  栖息之鹰  阅读(911)  评论(0编辑  收藏  举报