我想创build每日日志,但有一个小问题。 日志不是每天创build的,而是包含以前的日志文件。 这是我目前的设置,我怎样才能改变它,所以它只为每一天创build一个日志文件?
我编辑以下文件: /etc/logrotate.d/httpd
我正在使用名为Zadmin的控制面板,所以我将其日志path作为第二个目录。
我正在使用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 }
继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。
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
尝试手动运行logrotate以查找错误: logrotate -d /etc/logrotate.d/httpd 。 该手册说“-d打开debugging模式,并暗示-v。在debugging模式下,不会对日志或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 }