Cronolog vs logrotate

您更喜欢哪种日志轮换工具?
根据我的经验,logrotate很棒.它非常灵活,适用于大多数软件.

但是,它有一些问题,并且由于cronolog主要是一个Web日志轮换工具,我将记录我的logrotate apache的经验,这是有问题的:

当旋转日志时,我们必须通知apache正在轮换日志,因为即使logrotate将access.log重命名为access.log.1,apache也会继续写入access.log.1,因为它正在写入inode,并且重命名文件不会影响inode编号.

在debian etch(以及可能还有许多其他发行版)上,logrotate用于旋转apache日志.现在,apache有一个graceful restart建议apache子进程在完成现有连接后退出,apache然后重新读取它的配置,生成新的子进程,开始写入新的日志文件(如果前一个已经旋转).

这听起来像是一个很好的解决方案,但优雅的重启并不总是在某些条件下工作(如重负载),因此debian开发人员决定在apache logrotate配置中使用apache重启而不是正常重启.不幸的是,这会导致所有连接立即被丢弃,这对于负载很重的站点来说非常糟糕.此外,apache重启也可能导致问题,如apache停止和无法启动(也在某些负载情况下),请参阅下面的错误链接了解详细信息.

底线是,logrotate很棒,但可能导致某些程序的某些问题.我对cronolog没有多少经验,但是当它通过管道写入日志时,它在旋转日志文件时不需要任何apache重载,这基本上解决了上面描述的所有问题.

相关的logrotate / apache debian bug:

> Debian bug #301702
> Debian bug #400455

翻译自:https://serverfault.com/questions/20337/cronolog-vs-logrotate

转载注明原文:Cronolog vs logrotate