Apache 每日日志轮换

Apache 每日日志轮换

我想创建每日日志,但有一个小问题。日志不是为每一天创建的,而是包含以前的日志文件。这是我当前的设置,我该如何更改它以便它只为每天创建一个日志文件?

我编辑以下文件:/etc/logrotate.d/httpd

我正在使用名为 Zadmin 的控制面板,因此我将其日志路径作为第二个目录。

我正在使用 CentOS 6.5 64 位。

/var/log/httpd/*log /var/sentora/logs/domains/zadmin/*.log {
    missingok
    rotate 4000000
    daily
    notifempty
    sharedscripts
    postrotate
    /sbin/service httpd reload > /dev/null 2>/dev/null || true
    endscript
}

答案1

根据 Brian 的回答,我是 cronolog 的忠实粉丝,它几乎可以完全满足您的要求:

CustomLog "|/usr/sbin/cronolog /var/log/httpd/%Y/%m/%Y-%m-%d-access.log" combined
ErrorLog "|/usr/sbin/cronolog /var/log/httpd/%Y/%m/%Y-%m-%d-error.log"

yum install cronolog将在 Cent6 上为你提供 cronolog。

答案2

Apache 允许您将日志文件传输到另一个程序,然后该程序可以处理轮换,而无需重新加载/重新启动 Apache。Apache 甚至提供了一个程序来执行此操作。

ErrorLog "|bin/rotatelogs -l -f /var/log/apache2/errlogfile.%Y.%m.%d.log 86400" common
CustomLog "|bin/rotatelogs -l -f /var/log/apache2/logfile.%Y.%m.%d.log 86400" common

答案3

尝试logrotate手动运行以查找错误:logrotate -d /etc/logrotate.d/httpd。手册上说“-d 打开调试模式并隐含 -v。在调试模式下,不会对日志或 logrotate 状态文件进行任何更改。”

这是我们成功使用的方法:

/var/log/httpd/*log {
  daily
  dateext
  dateformate -%d-%m-%Y
  missingok
  nocompress
  rotate 30
  postrotate
    /sbin/service httpd reload > /dev/null 2>/dev/null || true
  endscript
}

相关内容