Linux

Web 伺服器日誌歸檔的最佳實踐(Linux + Nginx)

  • August 21, 2012

我想保留/歸檔我所有的 Web 伺服器日誌,並且不讓它們被 logrotate 刪除。推薦的方法是什麼?這是一個 Linux 機器,執行 Nginx。提前致謝。

(我更喜歡使用 cronolog,但由於 Nginx 處理日誌記錄的方式,它似乎與 Nginx 不兼容。)

用 logrotate 來做,告訴它你想要什麼……

/var/log/nginx/*.log {
   daily
   dateext
   missingok
   rotate 7305 # 2 decades
   olddir /var/log/nginx/old
   compress
   delaycompress
   notifempty
   create 644 nginx root
   sharedscripts
   postrotate
     if [ -f /var/run/nginx.pid ]; then
       kill -USR1 `cat /var/run/nginx.pid`
     fi
   endscript
}

我不使用 nginx,所以我使用了我為 postrotate 找到的範例……如果您已經有 logrotate 腳本,請從修改它開始。

關鍵部位:

  • “每天”是指每一天。您可以每週或基於大小進行,但這與“dateext”的互動效果不那麼好。
  • “dateext”意味著它將根據日期而不是簡單的數字為旋轉的日誌文件命名;這樣就不必每天重命名每個日誌文件*,*您可以從文件名中判斷日誌文件的日期
  • “旋轉 7305”——這是兩個十年。或多或少地保持… logrotate 確實更喜歡某種退休,但您可以將其設置得高得離譜。
  • “olddir”必須在同一個文件系統上,但這會將日誌保存在一個單獨的目錄中,這樣你就可以弄清楚發生了什麼
  • “delaycompress”和“create”有助於確保它與不想使用它的軟體一起使用

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