![使用 rsyslogd 轮换并连续写入大型日志文件](https://linux22.com/image/664433/%E4%BD%BF%E7%94%A8%20rsyslogd%20%E8%BD%AE%E6%8D%A2%E5%B9%B6%E8%BF%9E%E7%BB%AD%E5%86%99%E5%85%A5%E5%A4%A7%E5%9E%8B%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6.png)
我有一个非常繁忙的日志文件(我们称之为/var/log/service.log
),出于故障排除的原因,它也经常被搜索。它的输出几乎是连续的,而且是 24/7。它每天大概输出 1-2 GB,但我们需要全部。
由于fgrep
大型日志文件的速度不切实际,因此需要频繁轮换。我已logrotate
设置为在 中运行/etc/cron.hourly
,使用指令和左右hourly
的大小限制。512M
这按预期工作:文件从 旋转/var/log/service.log
到/var/log/service.log-20150810
或诸如此类。问题是,重命名只是对 inode/目录条目进行外观更改,因此现在rsyslogd
会继续写入/var/log/service.log-20150810
一段时间,而新创建的条目/var/log/service.log
则为空。在某个时候,rsyslogd
确实决定开始写入新的条目,但我不清楚这样做的韵律或原因。
无论如何,我需要某种方式来“启动”rsyslogd
它,告诉它开始/var/log/service.log
在日志轮换后写入新的、原始的日志。向它发送 SIGHUP 似乎不起作用。任何不涉及丢失大量日志条目(即重新启动rsyslogd
)的想法都将不胜感激!
(旁注:我知道logrotate
命名方案会导致/var/log/service.log.1
诸如此类的事情,所以,我有点困惑/var/log/service.log-20150810
。它rsyslogd
内部也会进行自己的旋转吗?这会有什么不利影响吗?)
提前谢谢了!