Redis日志轮换配置

17

有没有人有Redis的logrotate配置文件示例?这是我目前拥有的:

/var/log/redis/*.log {
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 root adm
        sharedscripts
        postrotate
                ...
        endscript
}

但我不确定在postrotate步骤上应该做什么。这是在Ubuntu 10.04 LTS上。

2个回答

24

这应该就够了:

/var/log/redis/*.log {
       weekly
       rotate 10
       copytruncate
       delaycompress
       compress
       notifempty
       missingok
}

7
但是这个请求如何让 Redis 重新打开日志文件呢? ... 哦,我自己想通了:Redis 实际上在每行日志记录时都会重新打开日志文件(参见 https://github.com/antirez/redis/issues/337#issuecomment-4002868)。 - jpetazzo
1
copytruncate 会重复使用同一个原始文件(先复制再截断)。因此,即使 Redis 没有重新打开文件,它也应该能够正常工作。 - c4il
2
Copytruncate不太高效,如果可能的话,我想避免使用它。这可行吗?看起来是可以的,那我就试试吧。 - Marius Gedminas
Copytruncate 在 redis-sentinel 中似乎不起作用。在截断后,Sentinel 的日志没有增长。 - timurb

4

我选择了

/var/log/redis/*.log {
        weekly
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 0660 redis redis
}

因为我不想使用copytruncate

我不确定create这一行是否必要。它匹配了在Ubuntu(或Debian)上通常由redis-server创建的日志文件的文件模式和所有权。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接