服務器上的日誌包括系統日誌和服務日誌每天都會產生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參數說明:
daily — 每日旋轉日誌文件。
weekly — 每週旋轉日誌文件。
monthly — 每月旋轉日誌文件。compress — 用gzip壓縮旋轉的日誌文件。
size size — 在日誌文件達到一定大小時開始旋轉。大小是以bytes (默認), kilobytes (sizek)或megabytes (sizem)計算。
nocompress — 在不需要壓縮旋轉日誌文件的情況下使用。
delaycompress — 在使用壓縮選擇時,旋轉文件不會在下一個循環開始時被壓縮。
copytruncate — 用於還在打開中的日誌文件,把當前日誌備份並截。複製當前的日誌文件,並置空當前文件。
nocopytruncate — 把日誌文件複製進備份,但該開放文件不會被裁剪。
dateext - 用時間格式表示日誌,輪換的日誌後綴爲-YYYYMMDD格式
rotate count — 在刪除前旋轉文件的特定次數。如果計數爲零,就意味着沒有副本保留。而5則意味着保留5個副本。
create mode owner group — 旋轉日誌文件並創建允許特定組合用戶的新文件。缺省是使用與原始文件一樣的模式,組合用戶。
missiongok - 如果文件找不到的話不會報錯,直接跳過
nocreate — 可以防止產生新日誌文件。
nodelaycompress – 日誌文件會在循環過程中被壓縮。
errors address — 將logrotate錯誤郵件發送到某個地址。
ifempty — 即使在空文件時也要旋轉。這是Logrotate的缺省項。
notifempty — 空文件不旋轉。
mail address — 這個郵件日誌文件是循環到一個地址,因此能有效從系統中清楚。
nomail - 在郵件日誌循環時,副本不郵寄。
olddir directory — 這個選項會將循環日誌文件保持在特定目錄。該目錄必需與現有日誌文件在同一文件系統。
noolddir — 循環的日誌文件與現有文件處於相同目錄。
prerotate/endscript - 在轉儲以前需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行
postrotate/endscript - 在轉儲以後需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行
其他參數可自行通過man logrotate查看幫助。