如何仅根据文件大小进行 logrotate?

Posted

技术标签:

【中文标题】如何仅根据文件大小进行 logrotate?【英文标题】:How to logrotate based solely on file size? 【发布时间】:2016-06-23 12:27:49 【问题描述】:

我有一个每天运行一次的 logrotate 策略,因为它是 cron.daily 的一部分。我想在达到一定大小时触发文件的 logrotate。所以我正在寻找一种方法来使文件大小成为触发器,而不是每小时、每天或某个设定的时间间隔发生。有可能做这样的事情吗?

一个文件的示例(我有许多大小值不同的此类文件)

/var/log/folder/localhost.access 
    size 500M
    copytruncate
    create somestr somestr
    dateext
    rotate 5
    compress
    missingok

【问题讨论】:

【参考方案1】:

是的,没错,您可以使用您发布的策略配置文件根据限制大小进行轮换。

【讨论】:

是的。当我提交上面提到的策略时说 cron.daily 文件夹,轮换每天运行一次(默认情况下每天早上 6 点 25 分)。因此,想象一下 localhost.access 文件在第二天早上 6:25 内增长到 2GB 的场景。即使文件超过 500M,轮换也要到早上 6:25 才会发生。我想确保一旦文件达到 500M,就会发生瞬时旋转。这样轮换更多的是按需(当达到 500M 时)而不是基于时间间隔(在特定时间间隔检查是否达到大小限制)。 您是否考虑过将政策提交给 cron.hourly ? 到目前为止,我刚刚创建了一个每 5 小时运行一次的 cron 作业。 0 0/5 * * * /etc/logrotate 每小时轮换太激进,每天轮换太慢。但是,基于大小的轮换相对于基于时间间隔的轮换的优势在于,如果没有活动并且日志文件在几天内没有增长,我们很好,如果有很多活动并且日志文件快速增长,那么在这种情况下,无论发生多快,只要达到大小限制就可以确保以 500M 的速度旋转。

以上是关于如何仅根据文件大小进行 logrotate?的主要内容,如果未能解决你的问题,请参考以下文章

杂集:centos7中利用logrotate工具切割tomcat日志

logrotate 日志管理

logrotate日志管理工具

logrotate日志管理工具

Logrotate实现Catalina.out日志每俩小时切割

pm2日志切割 - pm2-logrotate