log日誌輪轉--logrotate

  服務器上的日誌包括系統日誌和服務日誌每天都會產生n多log,好多人會自己寫腳本來進行日誌的切割、壓縮等,而忽略了系統自帶的服務--logrotate。

  簡介

  logrotate是個十分有用的工具,它可以自動對日誌進行截斷(或輪循)、壓縮以及刪除舊的日誌文件。它是基於CRON來運行的,其腳本是「/etc/cron.daily/logrotate」。主流Linux發行版上都默認安裝有logrotate包,這也是我選擇用他的主要原因。

  使用

  實際運行時,Logrotate會調用配置文件「/etc/logrotate.conf」:

也可以在「/etc/logrotate.d」目錄裏放置自己的配置文件,用來覆蓋Logrotate的缺省值。

下面是一個切割rabbitmq日誌的例子:

/var/log/rabbitmq/*.log {
        weekly
        missingok
        rotate 20
        compress
        delaycompress
        notifempty
        dateext
        copytruncat
        sharedscripts      
        postrotate
            /etc/init.d/rabbitmq-server rotate-logs > /dev/null
        endscript

logrotate參數說明:

  1. daily — 每日旋轉日誌文件。
    weekly — 每週旋轉日誌文件。
    monthly — 每月旋轉日誌文件。

  2. compress — 用gzip壓縮旋轉的日誌文件。

  3. size size — 在日誌文件達到一定大小時開始旋轉。大小是以bytes (默認), kilobytes (sizek)或megabytes (sizem)計算。

  4. nocompress — 在不需要壓縮旋轉日誌文件的情況下使用。

  5. delaycompress — 在使用壓縮選擇時,旋轉文件不會在下一個循環開始時被壓縮。

  6. copytruncate — 用於還在打開中的日誌文件,把當前日誌備份並截。複製當前的日誌文件,並置空當前文件。

  7. nocopytruncate — 把日誌文件複製進備份,但該開放文件不會被裁剪。

  8. dateext - 用時間格式表示日誌,輪換的日誌後綴爲-YYYYMMDD格式

  9. rotate count — 在刪除前旋轉文件的特定次數。如果計數爲零,就意味着沒有副本保留。而5則意味着保留5個副本。

  10. create mode owner group — 旋轉日誌文件並創建允許特定組合用戶的新文件。缺省是使用與原始文件一樣的模式,組合用戶。

  11. missiongok - 如果文件找不到的話不會報錯,直接跳過

  12. nocreate — 可以防止產生新日誌文件。

  13. nodelaycompress –    日誌文件會在循環過程中被壓縮。

  14. errors address — 將logrotate錯誤郵件發送到某個地址。

  15. ifempty — 即使在空文件時也要旋轉。這是Logrotate的缺省項。

  16. notifempty — 空文件不旋轉。

  17. mail address — 這個郵件日誌文件是循環到一個地址,因此能有效從系統中清楚。

  18. nomail - 在郵件日誌循環時,副本不郵寄。

  19. olddir directory — 這個選項會將循環日誌文件保持在特定目錄。該目錄必需與現有日誌文件在同一文件系統。

  20. noolddir — 循環的日誌文件與現有文件處於相同目錄。

  21. prerotate/endscript - 在轉儲以前需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行

  22. postrotate/endscript - 在轉儲以後需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行

其他參數可自行通過man logrotate查看幫助。

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