logrotate分割日誌文件

昨天參與作的線上項目上線了,看了下log文件竟然尚未分割,考慮到可能致使log文件很大形成性能降低,趕忙作了下日誌分割。Linux下有個logrotate工具能夠協助日誌分割,只須要配置一下參數就能夠了,很是方便,因而採用這種方式直接配置了一下。nginx

我是用來作nginx日誌文件分割的,個人配置文件以下:編程

在/etc/logrotate.d/目錄下建立一個配置文件例如nginx,文件內容以下:工具

/search/nginx/logs/access_log /search/nginx/logs/error.log{
daily
dateext
extension .log
create
rotate 60
notifempty
sharedscripts
postrotate
[ ! -f /usr/local/nginx/sbin/nginx.pid ] || kill -USR1 `cat /usr/local/nginx/sbin/nginx.pid`
endscriptpost

}性能

字段的含義分別是:日誌

daily 天天分割一次crontab

dateext 表示用日誌格式來表示日誌文件,這樣日誌名就改爲access-20140626ip

extension .log 表示在日誌名後面再加上 .log後綴名  日知名編程access-20140626.logio

create 表示分割好以後建立新的日誌文件 即建立access.log配置

rotate 60 表示備份這麼多份

notifempty 表示日誌文件若是爲空的話就不作分割

sharedscripts 表示多個日誌文件之間 只執行一次logrotate

postrotate
[ ! -f /usr/local/nginx/sbin/nginx.pid ] || kill -USR1 `cat /usr/local/nginx/sbin/nginx.pid`
endscript 

表示的是執行完logrotate以後,執行那個命令

還有不少其餘的參數,具體能夠 man logrotate查看。

我在配置完logrotate以後覺得得置crontab文件 來讓logrotate定時執行,因而:

crontab -e

59 23 * * * /usr/sbin/logrotate -f /etc/logrotate.d/nginx

結果次日來看發現分割了兩次,23:59的時候分割了一次,04:02的時候也分割了一次,才知道原來logrotate是會自動執行的,時間是4點的時候,也能夠修改配置文件來修改時間,因此不用再設定crontab文件。

在拷貝和清空之間有一個時間差,因此可能會丟失部分日誌數據。

相關文章
相關標籤/搜索