Docker

僅使用 size 選項的 logrotate 不會旋轉。這是在 Alpine docker 容器內

  • June 27, 2019

我有以下訪問日誌的配置

cat /etc/logrotate.d/logrotate_nginx.conf
/nginx/access/logs/*.log {
 rotate 2
 size 1k
 missingok
 compress
 notifempty
 copytruncate
}

沒有時間間隔配置。

這應該意味著它在 ‘/nginx/access/logs/’ 處的日誌達到 1 KiloByte 後輪換日誌,對嗎?

但這是現在的日誌輪換

/ # ls -l /nginx/access/logs/
total 8
-rw-r--r--    1 root     root          1264 Jun 24 11:17 nginx-access.log
-rw-r--r--    1 root     root          1292 Jun 24 11:17 nginx-access_withbody.log
-rw-r--r--    1 root     root             0 Jun 24 11:16 nginx-error.log

這是 logrotate.status

/ # cat /var/lib/logrotate.status
logrotate state -- version 2
"/var/log/acpid.log" 2019-6-24-11:0:0
"/mnt/mesos/sandbox/logs/nginx-error.log" 2019-6-24-11:0:0
"/mnt/mesos/sandbox/logs/nginx-access.log" 2019-6-24-11:0:0
"/mnt/mesos/sandbox/logs/nginx-access_withbody.log" 2019-6-24-11:0:0

我想知道為什麼它不旋轉。如果問題出在 conf. 並根據文件

尺寸 尺寸

這個選項是相互的
與時間間隔選項獨占,它會導致日誌
如果在時間標準之後指定,則在不考慮上次旋轉時間的情況下旋轉文件

在 Alpine Linux 中,預設情況下不啟動 cron。因此,任何文件夾中的作業都不會被執行。解決方案是啟動 croncrond

logrotate.status您包含的文件中,看起來日誌最後一次輪換是在 11:00,並且從目錄列表中可以看到文件在那之後進行了更新。

這可能意味著logrotate作業每小時執行一次。當日誌輪換作業再次執行或手動執行時,應輪換您的日誌。

引用自:https://unix.stackexchange.com/questions/526595