昨天參與作的線上項目上線了,看了下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文件。
在拷貝和清空之間有一個時間差,因此可能會丟失部分日誌數據。