伺服器上的日志包括系統日志和服務日志每天都會産生n多log,好多人會自己寫腳本來進行日志的切割、壓縮等,而忽略了系統自帶的服務--logrotate。
簡介
logrotate是個十分有用的工具,它可以自動對日志進行截斷(或輪循)、壓縮以及删除舊的日志檔案。它是基于CRON來運作的,其腳本是「/etc/cron.daily/logrotate」。主流Linux發行版上都預設安裝有logrotate包,這也是我選擇用他的主要原因。
使用
實際運作時,Logrotate會調用配置檔案「/etc/logrotate.conf」:
也可以在「/etc/logrotate.d」目錄裡放置自己的配置檔案,用來覆寫Logrotate的預設值。
下面是一個切割rabbitmq日志的例子:
<code>/var/log/rabbitmq/</code><code>*.log {</code>
<code> </code><code>weekly</code>
<code> </code><code>missingok</code>
<code> </code><code>rotate 20</code>
<code> </code><code>compress</code>
<code> </code><code>delaycompress</code>
<code> </code><code>notifempty</code>
<code> </code><code>dateext</code>
<code> </code><code>copytruncat</code>
<code> </code><code>sharedscripts </code>
<code> </code><code>postrotate</code>
<code> </code><code>/etc/init</code><code>.d</code><code>/rabbitmq-server</code> <code>rotate-logs > </code><code>/dev/null</code>
<code> </code><code>endscript</code>
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檢視幫助。
本文轉自Jx戰壕 51CTO部落格,原文連結:http://blog.51cto.com/xujpxm/1861431,如需轉載請自行聯系原作者