使用 logrotate 切割服務日誌

後端開發常遇到的一個問題是,服務產生的日誌文件過大,在使用日誌文件排查問題時,
如果文件過大,會降低排查問題的效率;而且不對文件進行切割,就沒法單獨的壓縮較久遠的日誌,浪費磁盤空間

下面介紹 linux 下常用的日誌切割工具 logrotate 的使用。

linux 系統默認安裝了 logrotate,通常由 cron 程序定時執行,執行週期是一天;

可以查看 cron 的執行日誌來確認 logrotate 的執行時間:/var/log/cron;

現在說說 logrotate 執行機制;

logrotate 的配置文件會決定它的執行行爲;主配置文件爲 /etc/logrotate.conf,可以把各個應用要切割的日誌單獨保存爲一個配置文件,並存放在 /etc/logrotate.d/ 目錄下,通過在主配置文件增加下面一行內容來引入各個應用的獨立配置文件;

 include  /etc/logrotate.d

下圖是 logrotate.conf:

假設現在要切割某個 nginx 服務的訪問日誌,創建 /etc/logrotate.d/www.nginx.conf,內容如下:

/www/nginx/logs/access.log {
   su root root
   daily
   copytruncate
   size +500M
   dateext
   compress
   olddir /www/nginx/logs
   notifempty
}

然後保存即可,第二天以後就會定時執行這份配置的日誌切割了。

那萬一配置有問題,總不能等一天出錯了才能發現吧,因此還需要提前檢查配置文件的正確性,其實就是將自動執行改爲手動執行即可,如果這次不想立即切割,加上 -d 選項即可:

sudo logrotate -d /etc/logrotate.d/www.nginx.conf
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章