2011-06-30 100 views
7

我有一個將日誌寫入文件'/ var/log/myApp'的自定義應用程序(myApp)。我可以看到正在寫入的日誌,它工作正常。現在我想設置logrotate的這個文件,爲了這個,我已經創建了一個配置文件「/etc/logrotate.d/myApp」,其內容是 -根據日誌大小,Logrotate不會自動旋轉

/var/log/myApp { 
    missingok 
    size +10k 
    start 0 
    nocompress 
    create 0600 root root 
    rotate 10 
    postrotate 
    /etc/init.d/rsyslog restart > /dev/null 2>&1 || true 
    endscript 
} 

現在,如果我做一個logrotate -dv /etc/logrotate.d/myApp我沒有看到任何錯誤,並且當執行logrotate -f /etc/logrotate.d/myApp時,即強制日誌旋轉日誌被旋轉。但是當日志文件大小超過10k時,日誌不會自動旋轉。任何幫助,將不勝感激。

回答

3

logrotate根據在/etc/logrotate.conf中配置的時間間隔來旋轉/etc/logrotate.d/中指定的日誌。在一些發行版中,默認值是一週。您可以使用例如在特定配置中覆蓋該時間間隔。 '每日'在你的配置文件中。

日誌文件將不會旋轉,直到logrotate已知文件的時間至少與指定的時間一樣長。我假設你等了很長時間和/或修改了conf文件?

+0

>在logrotate知道文件之前,日誌文件將不會旋轉至少與指定的時間一樣長。 Gwha​​?這對我來說是新聞。我在logrotate手冊頁中沒有看到任何關於此的內容。如何調試一個logrotate conf文件,而不必等待24小時,看看它是否工作? – Logan

+0

@Logan - 您使用'-f'(強制)選項。 – Hogan

+0

參見http://unix.stackexchange.com/questions/15546/logrotate-log-does-not-need-rotating-why/15547#15547(/ var/lib/logrotate/status和-f標誌) – pevik

1

logrotate每天只能工作一次,所以它不會一直檢查您的文件大小。

,如果你想要一個有效的方式來保持一定的尺寸下,你應該使用cron作業一樣

例如,強制旋轉每隔一小時在crontab

0 * * * * logrotate <my conf here> 

和你的日誌會,如果需要,每小時旋轉一次。我的免費層aws服務器有這樣的問題,因爲大小超過了快速,我沒有足夠的磁盤空間來等待24小時的輪轉