Nginx
Logrotate - 如何更改它以使其永遠不會刪除日誌並每 6 個月創建一個 .gz?
我讀了man logrotate,但我仍然不清楚。我的問題主要與 NGINX 網路伺服器日誌有關。
這是我目前的 logrotate.conf:
# rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # use date as a suffix of the rotated file dateext # uncomment this if you want your log files compressed #compress # RPM packages drop log rotation information into this directory include /etc/logrotate.d # no packages own wtmp and btmp -- we'll rotate them here /var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1 } /var/log/btmp { missingok monthly create 0600 root utmp rotate 1 }
在 /etc/logrotate.d 中,我還有:nginx:
/var/log/nginx/*log { create 0644 nginx nginx daily rotate 10 missingok notifempty compress sharedscripts postrotate /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true endscript }
這些是我可以看到的一些.gz:
access.log-20150430.gz access.log-20150509.gz (created after ~10 days) access.log-20150524.gz (created after ~15 days) access.log-20150528.gz (created after ~4 days)
- 為什麼 .gz 日誌如此頻繁地在如此“隨機”的時間範圍內創建?
- 為了每 6 個月和/或在 .log 文件大於 100MB 之後創建新的 .gz,我應該更改什麼?
- 旋轉 10是否意味著如果我已經有 10 個 .gz 文件,那麼當它壓縮第 11 個時,它會自動刪除最舊的 .gz 文件?如果是,我怎樣才能避免刪除日誌文件?我必須保留它們,即使它們已經很老了。
- daily和rotate 10和有什麼不一樣?
- 這些文件的創建權限可以嗎?
- 在我更改 logrotate.conf 上的某些內容後,我應該重新啟動某些服務,還是應該立即應用更改?
我認為 logrotate 手冊對您的大部分觀點都很清楚。以下是我的回答:
- 使用
daily
會導致每天發生日誌輪換。因此,您需要檢查為什麼它沒有每天發生。例如,notifempty
如果日誌文件空了幾天,這可能是由其他選項引起的。- 我找不到每 6 個月執行一次的選項,但您有
monthly
和yearly
. 對於尺寸設置,您可以使用size 100M
.- 是的。要保留它們,您可以選擇一個非常大的值。
daily
指定輪換的頻率,同時rotate
指定保留的日誌文件數。- 如果日誌不包含敏感資訊(其他人可以閱讀),應該沒問題。
- 不,你不需要重新啟動任何東西。