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的调度周期最多是一小时,只能更小。