Nginx

Logrotate - 如何更改它以使其永遠不會刪除日誌並每 6 個月創建一個 .gz?

  • May 28, 2015

我讀了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)
  1. 為什麼 .gz 日誌如此頻繁地在如此“隨機”的時間範圍內創建?
  2. 為了每 6 個月和/或在 .log 文件大於 100MB 之後創建新的 .gz,我應該更改什麼?
  3. 旋轉 10是否意味著如果我已經有 10 個 .gz 文件,那麼當它壓縮第 11 個時,它會自動刪除最舊的 .gz 文件?如果是,我怎樣才能避免刪除日誌文件?我必須保留它們,即使它們已經很老了。
  4. dailyrotate 10和有什麼不一樣?
  5. 這些文件的創建權限可以嗎?
  6. 在我更改 logrotate.conf 上的某些內容後,我應該重新啟動某些服務,還是應該立即應用更改?

我認為 logrotate 手冊對您的大部分觀點都很清楚。以下是我的回答:

  1. 使用daily會導致每天發生日誌輪換。因此,您需要檢查為什麼它沒有每天發生。例如,notifempty如果日誌文件空了幾天,這可能是由其他選項引起的。
  2. 我找不到每 6 個月執行一次的選項,但您有monthlyyearly. 對於尺寸設置,您可以使用size 100M.
  3. 是的。要保留它們,您可以選擇一個非常大的值。
  4. daily指定輪換的頻率,同時rotate指定保留的日誌文件數。
  5. 如果日誌不包含敏感資訊(其他人可以閱讀),應該沒問題。
  6. 不,你不需要重新啟動任何東西。

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