我是用來做nginx日志文件分割的,我的配置文件如下:
成都創(chuàng)新互聯(lián)從2013年創(chuàng)立,先為金平等服務(wù)建站,金平等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為金平企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。在/etc/logrotate.d/目錄下創(chuàng)建一個(gè)配置文件例如nginx,文件內(nèi)容如下:
/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`
endscript
}
字段的含義分別是:
daily 每天分割一次
dateext 表示用日志格式來表示日志文件,這樣日志名就改成access-20140626
extension .log 表示在日志名后面再加上 .log后綴名 日知名編程access-20140626.log
create 表示分割好之后創(chuàng)建新的日志文件 即創(chuàng)建access.log
rotate 60 表示備份這么多份
notifempty 表示日志文件如果為空的話就不做分割
sharedscripts 表示多個(gè)日志文件之間 只執(zhí)行一次logrotate
postrotate
[ ! -f /usr/local/nginx/sbin/nginx.pid ] || kill -USR1 `cat /usr/local/nginx/sbin/nginx.pid`
endscript
表示的是執(zhí)行完logrotate之后,執(zhí)行那個(gè)命令
還有很多其他的參數(shù),具體可以 man logrotate查看。
我在配置完logrotate之后以為得置crontab文件 來讓logrotate定時(shí)執(zhí)行,于是:
crontab -e
59 23 * * * /usr/sbin/logrotate -f /etc/logrotate.d/nginx
結(jié)果第二天來看發(fā)現(xiàn)分割了兩次,23:59的時(shí)候分割了一次,04:02的時(shí)候也分割了一次,才知道原來logrotate是會(huì)自動(dòng)執(zhí)行的,時(shí)間是4點(diǎn)的時(shí)候,也可以修改配置文件來修改時(shí)間,所以不用再設(shè)定crontab文件。
在拷貝和清空之間有一個(gè)時(shí)間差,所以可能會(huì)丟失部分日志數(shù)據(jù)。