Apache-2.2

如何防止我的 Web 伺服器的日誌文件變得太大?

  • February 1, 2011

注意:我使用的是 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,postrotateendscript

引用自:https://serverfault.com/questions/229423