如何让 logrotate 在旋转时考虑文件大小

如何让 logrotate 在旋转时考虑文件大小

假设我想在文件大小为 1kb 时进行 logrotate。运行之前,如果日志文件大小为 4kb,我预计 logrotate 将创建 4 个不同的日志文件。

前:

something.log (4kb) 

我期望发生什么。

something.log (0kb) 
something.log.1 (1kb)
something.log.2 (1kb)
something.log.3 (1kb)
something.log.4 (1kb)

但目前发生的事情是

something.log (0kb) 
something.log.1 (4kb)

尽管我已经将尺寸指定为 1k。

读取日志的程序无法处理大于一定大小的文件,所以我想使用 logrotate 来检查大小。

我正在使用的 logrotate 配置文件示例

/pathme/something/data/*/logs/*.log {
su username1 username1
missingok
rotate 10
notifempty
size 1k
copytruncate}

答案1

默认情况下,Logrotate 每天仅由 cron 运行一次,请查看其配置并采取相应措施。如果日志文件在(比如说)下午超出了您在 logrotate 配置中指定的最大大小,则 logrotate 不会对其采取任何措施,直到它运行为止。这通常发生在午夜左右。

如果您需要精确地确定日志文件的大小,我建议您更频繁地运行 logrotate(每小时、每 30 分钟或其他),然后将 logrotate 配置为小于所需最大大小的值,以避免日志文件变得太大而导致程序无法读取它们。

您没有指定操作系统,但日常系统 cron 作业通常是/etc/cron.daily或类似的。

相关内容