注意:我正在使用Apache2(在Linux上),但我在一般意义上询问(仅适用于Linux),因为我也想知道在一般情况下完成此操作的“最佳”方法(因为我即将在Nginx或Cherokee上部署一个大型网站.
最佳答案
你可以使用logrotate.它根据特定服务的配置文件旋转日志.它通常由cron每天运行.
原文链接:https://www.f2er.com/nginx/435485.html/etc/logrotate.d/apache2中apache的配置文件示例
/var/log/apache2/*_log {
daily
rotate 31
missingok
compress
delaycompress
sharedscripts
postrotate
if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then
/etc/init.d/apache2 reload > /dev/null
fi
endscript
}
这个会:
>每天旋转日志
>保留31个旋转的日志文件
>压缩旋转的日志,但保持最新的旋转日志不受压缩(延迟压缩)
>重新加载该过程
如果您不希望重新加载该进程,那么您应该使用copytruncate,它将当前内容复制到新文件,压缩它然后截断当前日志文件.在这种情况下,你不需要共享脚本,postrotate和endcript.