1. 程式人生 > >logrotate 日誌分割工具的配置使用

logrotate 日誌分割工具的配置使用

Logrotate是linux下的一個用於對日誌檔案分割,壓縮或者傳送郵件的的工具。當系統中的某個程序會定期生成大量的log檔案時,logrotate可以定期(每天一次,每週一次等等)自動化的將這些log檔案進行分割壓縮,刪除等操作。

         一般情況下,logrotate是一個在/etc/corn.daily下的每天執行的cronjob,logrotate在一天之中也不會對log檔案進行多次的修改,除非log檔案壓縮的標準時基於檔案的大小或者使用了-f引數強制修改。

Logrotate的命令格式為:

logrotate [-dv] [-f|--force] [-s|--state file] config_file+

引數說明:

-v 輸出執行過程說明

-d 開啟debug模式

-f 強制執行操作,當我們手動修改/etc/logrotate.d目錄下的配置是,加上該引數使得修改立即生效

-s 告訴logrotate使用一個備用的狀態檔案,預設狀態檔案時/var/lib/logrotate/status

舉例說明logrotate的使用:

假設現在自己寫的一個指令碼在不斷的生成monitor.log的日誌,隨著時間的增長該日誌檔案也將變得越來越大,為了便於處理,我們不希望該日誌過大,因此我們希望該日誌按照每天一次的分割頻率分割成若干個小檔案。

首先進入/etc/logrotate.d目錄下,新建一個檔案。命名問getMap,編輯該檔案
/root/zzx/monitor.log{
notifempty
daily
rotate 5
}

第一行:是日誌檔案所在的路徑

第二行:notifempty表示當日志文件為空的時候就不需要分割了。若為空也需要分割,則填ifempty即可。

第三行:daily表示每天一次,weekly表示每週一次,monthly表示每月一次

第四行:rotate n表示日誌在被rotate n次之後,就的日誌將被移除或者mail到配置的地址中去,如果n=0,則表示直接移除舊的檔案。

如果希望rotate僅僅在日誌檔案過大時執行,則可以加上一行

size <size>

表示在日誌檔案超過size的大小時,執行操作。

一個更復雜的例子

/data/log/keystone/*.log {
    daily
    missingok
    rotate 5
    compress
    minsize 100k
    create 640 keystone keystone
    postrotate
        if dpkg-vendor --derives-from ubuntu ; then
            service keystone restart >/dev/null 2>&1 || true
        else
            invoke-rc.d keystone restart
        fi
    endscript
}

其中compress表示對日誌進行壓縮操作

Create表示需要新建日誌檔案,指明使用者組和使用者以及檔案許可權

Postrotate/endscript包圍的是在rotate完成之後需要執行的指令碼,對於有些程序,需要重新啟動以便生成新的日誌檔案,否則將會出錯。其中的指令碼即為shell指令碼,按照shell指令碼的語法編寫即可。

         在配置完成之後,執行:

執行logrotate:

/usr/sbin/logrotate -vf /etc/logrotate.conf

若沒有報錯,檢視/root/zzx/下面,會生成monitor.log.1檔案,說明配置成功了。