Answers:
apache需要重新加载的原因是,一旦打开文件,它将获得文件句柄,并且它将继续写入该文件句柄。当您移动文件时,看不到它,只是继续写入相同的句柄。重新加载后,它将再次打开文件并获得新的句柄。
为了避免重新加载,您可以复制文件并清空旧文件,而不必移动文件。这样,Apache可以继续写入同一文件句柄。您可以通过在logrotate配置文件中添加“ copytruncate”选项来做到这一点,如下所示:
/apache/*log {
copytruncate
compress
dateext
rotate 365
size=+300M
olddir /log/old/apache
notifempty
missingok
}
logrotate
说,@ harp要小心:“请注意,复制文件和截断文件之间的时间间隔非常短,因此可能会丢失某些日志记录数据。”
copytruncate
吗?
我建议您使用http://cronolog.org/
这是我的用法:
CustomLog "|/usr/local/sbin/cronolog -S /var/log/httpd/t3.CCC.eu-access_log -P /var/log/httpd/t3.CCC.eu-access_log.prev /var/log/httpd/t3.CCC.eu-%Y.log" combined
lastaction echo "" | /apache/*log endscript
文件句柄时不是“丢失”吗?