Apache 2日志轮换

Apache 2有rotatelogs,这似乎是做什么说的,也就是说,允许我为虚拟主机定义一个位置和一个pipe道,在这种情况下,error_log按大小或按时间旋转。

我在OS X上,logrotate不可用,看起来像使用syslog,但在这种情况下,Apache不logging到系统日志,我也不相信这是我想要做的。 如果我有系统日志接pipe,它会旋转,邮编,电子邮件,等等,但我不得不哄阿帕奇,我相信这是一个有点蛮力。

我今天只在error_log上工作,想要一个200K大小的日志文件,然后旋转。 rotatelogs需要1M作为一个值,我可以使用像2M的东西?

我相信系统日志不起作用的另一个原因是,我必须在每次添加新的虚拟主机时在syslogconfiguration设置中定义一行。

使用Apache的rotatelogs,有两个问题:

1)日志拥有root拥有者,有没有什么办法来定义拥有者或者这个问题的任何权限?

2)有数百个虚拟主机,我想保留10个左右的日志,然后删除剩下的。 这通常是用unix find和gzip和rm等来解决的?

简介:我有/path/www/lastname.firstname/logs/其中lastname.firstname将成百上千个目录。 error_log需要转到该lastname.firstname的日志目录。 我正在寻找如何确保这些日志文件不会太大,失去控制。 我真的希望它们非常小,因此用户可以快速下载它们,并在开发过程中查看错误。 用户将不会被授予shell访问权限,所以他们不能在日志中使用像tail -f这样的东西。

为什么不在你的OS X服务器上安装logrotate? 这是一个Unix,logrotate在Unices上工作…这两个实际上是为对方做的。

我会衷心同意使用logrotate程序来处理这种情况。 logrotate软件包通常有一个apache log rotater例子。 但是,您会发现通常它会执行以下操作:(1)重命名日志文件,然后(2)发出非致命的kill命令,以便Apacheclosures当前日志文件并创build新文件。 在kill命令之后的一小段时间内(这对您的用户来说很好),日志数据可能会被放在旧的日志文件中。

关于使用pipe道日志旋转function的其他几个实用点:

  1. 每个日志文件消耗额外的进程。 如果你已经有很多的过程,这可能是有问题的。

  2. 当然,使用更多的总开放文件句柄,当然可以configuration。

  3. 我有经验,在apache服务器closures期间,并不是所有东西都能正确地死掉。 不过这是很久以前的事了。 但是它也使得简单地杀死apache进程有时会造成僵尸的出现。

顺便说一下,我亲自将logrotate包移植到不同的UNIXen / Linuxen系统上。

请享用!