我想创建每日日志,但有一个小问题。日志不是为每一天创建的,而是包含以前的日志文件。这是我当前的设置,我该如何更改它以便它只为每天创建一个日志文件?
我编辑以下文件:/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
}