我如何开始一个新的Apache的错误日志?

我在一个PHP脚本中做了一百万次愚蠢的事情,所以我的apache错误日志现在是12兆! debugging不是一个好的情况。

  1. 在什么情况下error.log会变成error.log.1和error.log.2.gz?
  2. 有没有一个Linux命令将手动滚动日志来获得一个新的error.log

我希望有人知道一个简单的方法来完成这一点。 如果没有,我会写一个BASH脚本。

谢谢。

  1. 由于日志旋转工具,您的日志正在旋转
  2. 您可以使用此命令手动旋转日志。 如果你想旋转你的Apache日志。

logrotate /etc/logrotate.d/apache2或(file_to_be_rotated)

此工具可帮助您pipe理生成大量日志文件的系统。 它允许自动旋转,压缩,删除和邮寄日志文件。 每个日志文件可以每天,每周,每月或当它变得太大时处理。

删除文件并发送HUP信号到写入日志文件的过程是规范的事情。

对于Apache,最好重新加载服务。

这不直接回答你的问题,但它可能会给你更多的select。 Apache允许您将日志的输出传递给从stdin读取的进程。 我最喜欢的避免巨大日志文件的策略是通过一个名为cronolog的实用程序来pipe理Apache的日志输出,这个实用程序在大多数Linux安装中作为一个可选的包提供。 它不会旋转到名为error_log.1error_log.2等的文件,而是可以按照date和/或时间来完成。

例如:

 ErrorLog "|/usr/bin/cronolog /path/to/httpd/logs/error_log.%Y-%m-%d" 

这会将错误日志从2012年2月1日发送到名为error_log.2012-02-01的文件,并且一旦时间到2012年2月2日,就会开始写入error_log.2012-02-02等等。

无论您需要什么,您也可以将其设置为按月,按星期,按小时,按分钟或按秒旋转。 更多信息在cronolog.org 。

如果你真的有雄心壮志,你可以编写自己的Perl脚本,或者从stdin中读取任何内容,然后使用你想要的任何规则写入日志文件或执行操作(比如通过电子邮件发送),然后通过Apachepipe理日志。