Apache-2.2
如何防止我的 Web 伺服器的日誌文件變得太大?
注意:我使用的是 Apache2(在 Linux 上),但我問的是一般意義上的(僅適用於 Linux),因為我也想知道一般情況下完成此任務的“最佳”方法(因為我即將在 Nginx 或 Cherokee 上部署一個大型站點)。
幾週後,我的日誌文件變得很大。我需要暫時保留它們,但我想刪除超過 2 週左右的條目。這可能嗎,我該怎麼做?
你可以使用 logrotate。它根據特定服務的配置文件輪換日誌。它通常由 cron 每天執行。
Apache 的配置文件範例
/etc/logrotate.d/apache2
/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
,它將目前內容複製到一個新文件中,壓縮它然後截斷目前日誌文件。在這種情況下,您不需要sharedscripts
,postrotate
和endscript
。