logrotate每日和大小?

如果logrotateconfiguration是用“size”和“daily”参数指定的,哪一个优先? 这在哪里logging? 我想这些旋转发生作为一个布尔OR操作,即如果日志是一天,他们得到旋转,或者,如果他们大于一定大小,他们也将被旋转。 但是,logrotate目前只使用“size”指令,而且似乎忽略了“daily”指令。 Logrotate设置为每小时运行一次。 操作系统是Linux,Red Hat和Debian的衍生产品。

此外,我首先指定“每日”,然后从文件开始指定“大小”。 不知道顺序是否重要,但无论如何,必须先在configuration文件中find…

谢谢!

如果使用size指令,logrotate将忽略每日每周每月每年的指令。 在执行man logrotate命令时,这在文档中并不清楚。 然而,这可以在实践中得到证实,并在这个任意的博客文章中提到。

有一个叫做minsize的指令,根据logrotate手册页是唯一可以和时间指令一起使用的大小指令。 但是,它仍然不是你想要的。 每天使用minsize基本上说: 每天 旋转日志,但只有当他们是至less#MB的大小

到目前为止,我已经找不到用logrotate来做你所需要的条件: 每天轮换,除非大小超过#MB,在这种情况下立即旋转 。 我不认为这只支持使用logrotate指令。 通过脚本钩子指令(如prerotatepostrotatefirstactionlastaction)可能会执行一些巧妙的脚本。

更新

从logrotate 3.81开始, maxsizetimeperiod一起被支持,这将是理想的解决scheme。 看到这篇文章的答案: 如何根据间隔旋转日志,除非日志超过一定的大小?

如果添加“每日”,则即使符合“大小”条件,也会每天旋转。 如果添加大小条件,则可能会在一天内获得两次轮换,具体取决于日志logging的详细程度。

如果“每日”首先在脚本中,则Size可能不会触发。

实际上,我在红帽的手册页上看起来很清楚大小之间的区别:

大小不一

  Log files are rotated when they grow bigger then size bytes, but not before the additionally specified time interval (daily, weekly, monthly, or yearly). The related size option is similar except that it is mutually exclusive with the time interval options, and it causes log files to be rotated with- out regard for the last rotation time. When minsize is used, both the size and timestamp of a log file are considered. 

根据我对logrotate的经验,@egg的第一个答案是不正确的!

如果每天,每月,… 来,那么大小指令后, 每日,每月,…将被忽略, 大小指令将应用于日志文件。

同样,当我第一次使用size指令,然后是每日,每周,每月和每年的指令时, size指令将被忽略。