Cronolog与logrotate


Answers:


14

以我的经验,logrotate很棒。它非常灵活,并且可以与大多数软件配合使用。

但是,它存在一些问题,并且因为cronolog主要是Web日志轮换工具,所以我将写下我在logrotate + apache方面遇到的问题:

旋转日志时,我们必须通知apache日志正在旋转,即使logrotate将access.log重命名为access.log.1,apache仍将继续写入access.log.1,因为它正在写入inode,并且重命名文件不会影响索引节点号。

在debian etch(可能还有许多其他发行版)上,logrotate用于旋转apache日志。现在,apache可以正常重启,建议apache子进程在完成为现有连接的服务后退出,然后apache重新读取其配置,生成新的子进程,这些子进程开始写入新的日志文件(如果以前的文件是旋转)。

这听起来像是一个很好的解决方案,但是平稳重启在某些情况下(例如重负载)并不总是起作用,因此debian开发人员决定在apache logrotate配置中使用apache重启而不是平稳重启。不幸的是,这会导致所有连接立即被丢弃,这对于负载较重的站点而言非常糟糕。此外,重新启动apache还会导致apache停止和不启动(在某些负载情况下)之类的问题,有关详细信息,请参见下面的错误链接。

最重要的是,logrotate很好,但是可能导致某些程序出现某些问题。我对cronolog没有太多经验,但是因为它通过管道写入日志,所以在旋转日志文件时不需要任何apache重装,这基本上解决了上面描述的所有问题。

相关的logrotate / apache debian错误:

  1. Debian错误#301702
  2. Debian错误#400455

1
上面的解决方案是使用truncate!它的作用是将access.log的内容复制到access.log.1,然后清空access.log(如您所见,access_log的inode保持不变)。通常,您的日志不超过几GB(最坏的情况),因此整个过程不会花费很长时间!
Nikolaidis Fotis

3

我更喜欢cronolog,但这并不是一个很强的偏好。

logrotate由cron启动的位置,并且如果由于某种原因导致系统停机时应该进行轮换,则不会轮换您的日志文件。

我还喜欢让日志文件的名称中带有日期(%Y%m.combined.access.log),因为我将这些日志保留了很长时间。在大多数系统上,默认情况下,apache logrotate会将文件命名为access.log,access.log.1等。可以在logfile中使用带logrotate的日期,但我上次不知道该怎么做。


2
如果已通过cron时间,则logrotate不起作用的问题可以通过安装“ anacron”软件包来解决。
andrewd18

甚至更好的是,您可以将日志保存为所需的格式-这可以使用rsyslog中的模板完成-(%year%-%month%-%day%_lala.log)。在这种情况下,您甚至不必旋转日志,因为每天都会更改名称!
Nikolaidis Fotis

2

仅使用过logrotate。这是Debian默认使用的,我从来没有对此有任何抱怨。


2

我几乎完全用完cronologlogrotatelogrotate随Debian一起提供,我允许它继续为邮件服务器日志之类的系统服务工作。但是,对于Apache和lighttpd日志文件,仅此而已cronolog

我使用的原因之一cronolog是所有配置都在Web服务器配置的日志文件行中进行

例如在lighttpd配置文件中,您可以输入:

accesslog.filename = "|/usr/bin/cronolog --symlink=/var/log/webs/access.log /var/log/webs/%Y/%W-access.log"

所有人每周都会获得一个新的日志文件,而无需进行任何其他配置。或者,您可以发挥创造力,并执行以下操作:

accesslog.filename = "|/usr/bin/cronolog --symlink=/var/log/webs/access.log /var/log/webs/%Y/%m/%a-access.log"

并获取一个按星期几显示流量的日志文件。例如,所有星期日,所有星期二。

更好的是,即使服务器关闭了一段时间,重启后仍将使用正确的日志文件。


1
看起来很像svlogd(runit和daemontools沿袭)。
东武
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.