天天看點

linux日志輪轉 時間,Linux下logrotate日志輪轉操作梳理(示例代碼)

對于Linux系統安全來說,日志檔案是極其重要的工具。logrotate程式是一個日志檔案管理工具。用于分割日志檔案,删除舊的日志檔案,并建立新的日志檔案,起到“轉儲”作用。可以節省磁盤空間。

下面就對logrotate日志輪轉操作做一梳理記錄:

1)配置檔案介紹

Linux系統預設安裝logrotate工具,它預設的配置檔案在:

/etc/logrotate.conf

/etc/logrotate.d/

logrotate.conf 才主要的配置檔案,logrotate.d 是一個目錄,該目錄裡的所有檔案都會被主動的讀入/etc/logrotate.conf中執行。

另外,如果 /etc/logrotate.d/ 裡面的檔案中沒有設定一些細節,則會以/etc/logrotate.conf這個檔案的設定來作為預設值。

logrotate日志切割是自動完成的,如果想手動切割,需要加-f參數,比如:

# /usr/sbin/logrotate -f /etc/logrotate.conf

# /usr/sbin/logrotate -f /etc/logrotate.d/nginx

logrotate指令格式:

logrotate [OPTION...]

-d, --debug :debug模式,測試配置檔案是否有錯誤。

-f, --force :強制轉儲檔案。

-m, --mail=command :壓縮日志後,發送日志到指定郵箱。

-s, --state=statefile :使用指定的狀态檔案。

-v, --verbose :顯示轉儲過程。

2)切割介紹

比如以系統日志/var/log/message做切割來簡單說明下:

第一次執行完rotate(輪轉)之後,原本的messages會變成messages.1,而且會制造一個空的messages給系統來儲存日志;

第二次執行之後,messages.1會變成messages.2,而messages會變成messages.1,又造成一個空的messages來儲存日志!

如果僅設定保留三個日志(即輪轉2次)的話,那麼執行第三次時,則 messages.3這個檔案就會被删除,并由後面的較新的儲存日志所取代!也就是會儲存最新的幾個日志。

日志究竟輪換幾次,這個是根據配置檔案中的dateext 參數來判定的。

看下logrotate.conf配置:

# cat /etc/logrotate.conf

# 底下的設定是 "logrotate 的預設值" ,如果別的檔案設定了其他的值,

# 就會以其它檔案的設定為主

weekly          //預設每一周執行一次rotate輪轉工作

rotate 4       //保留多少個日志檔案.預設保留四個.(保留n個檔案,就是輪轉n-1次)

create         //自動建立新的日志檔案,新的日志檔案具有和原來的檔案相同的權限;因為日志被改名,是以要建立一個新的來繼續存儲之前的日志

dateext      //這個參數很重要!就是切割後的日志檔案以目前日期為格式結尾,如xxx.log-20131216這樣,如果注釋掉,切割出來是按數字遞增,即前面說的 xxx.log-1這種格式

compress    //是否通過gzip壓縮轉儲以後的日志檔案,如xxx.log-20131216.gz ;如果不需要壓縮,注釋掉就行

include /etc/logrotate.d

# 将 /etc/logrotate.d/ 目錄中的所有檔案都加載進來

/var/log/wtmp {                 //僅針對 /var/log/wtmp 所設定的參數

monthly              //每月一次切割,取代預設的一周

minsize 1M              //檔案大小超過 1M 後才會切割

create 0664 root utmp           //指定建立的日志檔案權限以及所屬使用者群組

rotate 1                 //隻保留一個日志.

}

# 這個 wtmp 可記錄使用者登入系統及系統重新開機的時間

# 因為有 minsize 的參數,是以不見得每個月一定會執行一次喔.要看檔案大小。

由這個檔案的設定可以知道/etc/logrotate.d其實就是由/etc/logrotate.conf 所規劃出來的目錄,雖然可以将所有的配置都寫入/etc/logrotate.conf ,但是這樣一來這個檔案就實在是太複雜了,尤其是當使用很多的服務在系統上面時, 每個服務都要去修改/etc/logrotate.conf的設定也似乎不太合理了。

是以,如果獨立出來一個目錄,那麼每個要切割日志的服務, 就可以獨自成為一個檔案,并且放置到 /etc/logrotate.d/ 當中

上一篇: Django之模闆