Que*_*low 21 configuration logrotate
从 logrotate 的手册页:
minsize size
日志文件在大于 size 字节时轮换,但不会在额外指定的时间间隔(每天、每周、每月或每年)之前轮换。相关的大小选项类似,只是它与时间间隔选项互斥,并且它会导致日志文件轮换而不考虑上次轮换时间。使用 minsize 时,会同时考虑日志文件的大小和时间戳。size size
日志文件在增长到大于 size 字节时进行轮换。如果 size 后跟 k,则假定大小以千字节为单位。如果使用M,则大小以兆字节为单位,如果使用G,则大小以千兆字节为单位。所以大小 100、大小 100k、大小 100M 和大小 100Gare 都是有效的。
我将大小设置为5M,将间隔设置为每周,认为日志将每周轮换一次,如果日志的大小超过 5M,则会发生额外的轮换。但是发生的情况是日志不会被轮换,除非它超过 5M,这似乎是minsize应该做的。
我是否错误地解释了手册?如果日志超过 5M,如何让日志每周轮换一次?
编辑:
我不确定以下信息是否相关,仅作为补充:
我正在使用 rsyslog 对消息、安全、cron、邮件日志、引导进行主要日志记录。以下是倒数第二个日志的轮换日期和文件大小,其中大小和间隔的设置如上所述:
filename rotation date file size
messages 20130129 5.3MB
secure 20130113 5.1kB
cron 20130113 3.6kB
maillog 20130113 1.1kB
Run Code Online (Sandbox Code Playgroud)
可以看出,只有消息被轮换。
编辑2:
我应该检查一下man logrotate
。他们实际上使用maxsize选项升级了它。这应该是我正在寻找的:
maxsize size
当日志文件在额外指定的时间间隔(每天、每周、每月或每年)之前增长超过 size 字节时,它们会被轮换。相关的大小选项类似,只是它与时间间隔选项互斥,并且它会导致日志文件轮换而不考虑上次轮换时间。使用 maxsize 时,会同时考虑日志文件的大小和时间戳。
mr.*_*tic 27
这里回答了一些问题: logrotate daily and size?
通常logrotate
每天只运行一次,因此不会完全遵守大小限制。logrotate
的状态文件(可能/var/lib/logrotate.status
)仅存储日期(而不是时间),它不打算更频繁地使用,因此您不能更频繁地旋转文件(更新:3.85 版增加了每小时支持,并在状态文件中存储了完整的时间戳.)
你没有说syslogd
你在使用哪个,rsyslog和syslog-ng支持基于大小的自我管理的轮换,所以你应该能够让它们按大小轮换,并logrotate
每周轮换(尽管可能需要一些想法文件命名以确保同时文件轮换不会意外删除某些内容)。
另一种选择是使用管道日志,就像 Apache 一样,实际上 Apache-2.4rotatelogs
完全支持此功能(以前的版本仅支持独立的大小或时间)。您没有说明日志的来源,但您可以登录到管道或 fifo,并使用rotatelogs
,如果支持的话。
与logrotate
<= v3.8.0三个支持的方案是:
size
按大小轮换,最多每天一次,无论经过的时间段如何daily
, weekly
, monthly
, yearly
)无条件轮换,无论大小minsize
&时间段,
如果日志文件大小超过 minsize,则按时间段轮换(使用 `notifempty 作为这种情况的特例)logrotate
v3.8.1 增加:
maxsize
&
当大小超过 maxsize 或经过时间段后,时间段会旋转。logrotate
在这种情况下,每天可能需要运行超过默认值一次。logrotate
v3.8.5 增加:
hourly
时间段支持,并在状态文件中存储完整的时间戳。您应该logrotate
(至少)每小时运行一次才能正常工作。 归档时间: |
|
查看次数: |
23013 次 |
最近记录: |