从logrotate的手册页:
大小不一
日志文件在长度大于字节大小时会旋转,但不会在额外指定的时间间隔(每天,每周,每月或每年)之前进行旋转。 除了与时间间隔选项互斥外,相关大小选项是相似的,它会导致日志文件旋转而不考虑上一次旋转时间。 当使用最大值时,会考虑日志文件的大小和时间戳。尺寸 大小
日志文件在长度大于字节大小时会进行旋转。 如果大小后面跟着k,则大小假定为千字节。 如果使用M,则大小以兆字节为单位,如果使用G,则大小以千兆字节为单位。 所以大小100,大小100k,大小100M和大小100G都是有效的。
我将size设置为5M,并将interval设置为每周 ,并认为日志会每周旋转一次,如果日志的大小超过5M,则会发生额外的旋转。 但是会发生的事情是,日志不会旋转,除非它超过了5M,这似乎是最小化应该做的。
我是否错误地解释了手册? 如何获得日志,每周轮换,如果超过5M?
编辑:
我不确定以下信息是否相关,只是作为补充:
我使用rsyslog做消息,安全,cron,maillog,引导的主要日志logging。 以下是如上所述设置大小和间隔的倒数第二个日志的旋转date和文件大小:
filename rotation date file size messages 20130129 5.3MB secure 20130113 5.1kB cron 20130113 3.6kB maillog 20130113 1.1kB
可以看出,只有消息被旋转。
EDIT2:
我应该检查与man logrotate
。 他们实际上用maxsize选项升级了它。 这应该是我正在寻找的:
最大 尺寸
即使在额外指定的时间间隔(每天,每周,每月或每年)之前,日志文件在大于字节大小时也会进行旋转。 除了与时间间隔选项互斥之外,相关大小选项是相似的,它会导致日志文件旋转而不考虑上一次旋转时间。 当使用maxsize时,会考虑日志文件的大小和时间戳。
这里回答一些问题: logrotate每日和大小?
通常logrotate
只会每天运行一次,所以大小限制将不会完全符合。 logrotate
的状态文件(可能是/var/lib/logrotate.status
)只存储date(不是次数),所以不能更频繁地使用,所以你不能更频繁地旋转文件。
你没有说你正在使用哪个syslogd
, rsyslog和syslog-ng支持自我pipe理的基于大小的旋转,所以你应该能够让它们按大小旋转,并得到logrotate
每周旋转(尽pipe一些想法可能是需要文件命名,以确保同时文件旋转不会意外删除的东西)。
另外一个select是使用pipe道日志,就像Apache一样,事实上Apache-2.4的rotatelogs
支持这个function(以前的版本只支持大小或时间独立)。 您不会说日志来自哪里,但是您可能能够login到pipe道或fifo,并使用rotatelogs
(如果支持)。
使用logrotate
<= v3.80,三种支持的scheme是:
logrotate-3.81
增加:
logrotate
可能需要每天运行一次以上的默认值。