logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。例如,你可以设置logrotate,让/var/log/foo日志文件每30天轮循,并删除超过6个月的日志。配置完后,logrotate的运作完全自动化,不必进行任何进一步的人为干预

默认centos系统安装自带logrotate


配置文件

/etc/logrotate.conf

常用配置

参数说明
monthly月轮询
rotate 5保留最近5个归档
size/minsize/maxsize日志大小限制/时间周期到日志达到限制/时间周期到日志大于限制
dateext使用当期日期作为命名格式
compress已轮询归档使用gzip压缩
delaycompress总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用
missingok日志丢失不报错继续滚动下一日志
notifempty日志文件为空,轮循不会进行
create 644 root root指定新建的日志文件权限以及所属用户和组
  • logrotate是一个由cron调度的周期性的任务,它的调度周期和日志的分割周期有关系。缺省linux环境下logrotate是一个按天调度的任务(脚本logrotate被放置在/etc/cron.daily路径下面)。
  • 这样如果一个日志的分割周期被定义为hourly,但是logrotate的调度周期还是daily的话,那么这个日志的hourly分割周期是无效的,因为logrotate才每天调度一次,导致日志的实际分割周期是天。
  • 因此logrotate的调度周期不能比任何日志的分割周期长。假设最小的日志分割周期需求是hourly,那么logrotate的调度周期最多是一小时,只能更小。

logrotate 的使用简介 logrotate的三个大小相关的参数