天天看點

log日志輪轉--logrotate

  伺服器上的日志包括系統日志和服務日志每天都會産生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 &gt; </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,如需轉載請自行聯系原作者

繼續閱讀