我一直在研究我的服务器的日志轮换主机〜5个相当高的stream量站点。 从我可以告诉,我的select是使用logrotate或使用旋转日志或chronologpipe道日志logging。
logrotate需要重新启动apache,并且SIGHUP和SIGUSR1重新启动在高stream量站点上都不太理想,因为要么放弃一堆连接,要么延迟压缩旧日志,直到所有subprocess自然死亡。 另外,如果启用压缩,停机时间可能非常重要。 将使用logrotate – 没有压缩和平稳的重新启动 – 事后压缩旧日志是最大限度地减less停机时间的最佳方式?
chronolog和rotatelogs听起来很有希望,但没有很好的文档。 我无法find与虚拟机特定日志结合使用的示例。 该chronolog网站说:“当扩展的文件名更改,当前文件被closures,并打开一个新的。 这是全球性的吗? 或者是每个AccessLog,CustomLog或ErrorLog指令?
chronolog和rotatelog之间有明显的区别吗?
我认为由apache写入文件的日志是稳定性方面的首选解决scheme。 想象一下,如果你的系统日志会closures,或者pipe道命令会出现错误,会发生什么?
为什么不写你自己的旋转脚本? 您可以使用以下algorithm来避免数据丢失和停机。
假设你需要旋转文件big_access_log
就个人而言,我只是使用logrotate,我不关心一些可能会丢失的数据,但我认为logrotate足够聪明,以primefaces方式进行旋转。
如果您将Apache设置为通过syslog进行日志logging,并使用rsyslog来处理日志logging,则可以将rsyslogconfiguration为将日志发送到根据当前date命名的文件。 这将消除重新启动Apache的需要,并且您可以轻松地将较旧的日志文件移开。
查看以下网站获取更多信息:
http://wiki.rsyslog.com/index.php/Working_Apache_and_Rsyslog_configuration
你可以做的另一件事是设置cronjob,执行以下操作:
/usr/bin/find /path/to/logs -name access.log | \ /usr/bin/sort | \ /usr/bin/head --lines=-1 | \ /usr/bin/xargs -r /usr/bin/bzip2 -9
这假设未压缩的访问日志可以按照时间顺序sorting。 最后一行(这将是当前日志)被省略,剩下的日志文件被压缩。 如果没有,则xargs上的-r标志表示该命令将不会运行。
如果需要,可以进一步调整以同时压缩多个日志