logrotate配置
在/etc/logrotate.d/目錄下創建一個配置文件例如nginx,文件內容如下:
nginx 示例如下:
/usr/local/nginx/logs/*.log {
rotate 5 # 一次將存儲5個歸檔日誌。對於第六個歸檔,時間最久的歸檔將被刪除。
notifempty #如果日誌文件爲空,輪循不會進行。
daily #日誌文件將按日輪循。其它可用值爲‘daily’,‘weekly’或者‘yearly’
missingok #在日誌輪循期間,任何錯誤將被忽略,例如“文件無法找到”之類的錯誤。
compress #在輪循任務完成後,已輪循的歸檔將使用gzip進行壓縮。
sharedscripts #表示多個日誌文件之間 只執行一次logrotate
postrotate #在所有其它指令完成後,postrotate和endscript裏面指定的命令將被執行。在這種情況下,rsyslogd 進程將立即再次讀取其配置並繼續運行。
/usr/local/nginx/sbin/nginx -s reopen
endscript
}
測試日誌輪詢配置:
先啓動nginx;
立即截斷日誌:
# logrotate --force /etc/logrotate.d/nginx ==》logrotate -f 是強制執行一次
[root@iZbp17avth0ympurvz5xliZ sbin]# logrotate --force /etc/logrotate.d/nginx
[root@iZbp17avth0ympurvz5xliZ sbin]# ls /usr/local/nginx/logs/
access.log error.log error.log.1.gz nginx.pid
注意:
logrotate是會自動執行的,時間是4點的時候,也可以修改配置文件來修改時間,所以不用再設定crontab文件。
更改logrotate配置後使用 /usr/sbin/logrotate /etc/logrotate.conf 使logrotate生效
===========================================
近日有臺機器log切割一直沒有生效,使用 /usr/sbin/logrotate /etc/logrotate.conf 手動啓動logrotate發現nginxlog路徑不正確,是的nginx log沒有切割,磁盤經常報警。