nginx日志切割
环境准备:
ubuntu服务器一台
安装nginx的服务器,详见
《NGINX简明安装配置升级》
nginx日志目录:/opt/nginx/logs
logrotate简介:
/etc/logrotate.conf #主配置文件,原则上不要修改
/etc/logrotate.d #子配置文件目录,有新日志要切割就在里面增加配置文件
/var/lib/logrotate/status #切割执行状态日志
/etc/cron.daily/logrotate #cron定时任务每日执行logrotate,如果要每小时执行请将该脚本拷贝到etc/cron.hourly/目录然后/etc/init.d/cron restart重启cron
切割备份日志必须与日志文件在同一个LINUX分区
/etc/logrotate.conf默认配置如下:
-
weekly
-
su root syslog
-
rotate 4
-
create
-
include /etc/logrotate.d
-
/var/log/wtmp {
-
missingok
-
monthly
-
create 0664 root utmp
-
rotate 1
-
}
-
/var/log/btmp {
-
missingok
-
monthly
-
create 0660 root utmp
-
rotate 1
-
}
/etc/logrotate.d中子配置文件格式:
-
/<日志目录>/<日志文件> { #支持正则匹配例如:/opt/nginx/logs/*/*.log
-
-
-
......
-
} #末尾花括号必须单独一行
nginx日志切割配置 :
创建配置文件及日志备份目录
-
sudo -i
-
mkdir /opt/nginx/logs_backup #必须与/opt/nginx/logs在同一mount分区
-
chown nginx:nginx /opt/nginx/logs_backup
-
touch /etc/logrotate.d/nginx
/etc/logrotate.d/nginx配置内容如下:
-
/opt/nginx/logs/* {
-
rotate 7 #保留备份天数
-
weekly #备份周期,选项:hourly|daily|weekly|yearly
-
compress #压缩
-
notifempty #空文件不备份
-
missingok #如果日志没找到,直接开始下一个日志的备份
-
olddir /opt/nginx/logs_backup #日志备份目录
-
create 644 nginx nginx #切割备份后创建的空新日志文件,格式:create [mode] [user] [group]
-
dateext #归档文件用YYYYMMDD格式后缀
-
dateyesterday #归档文件后缀设置为前一天
-
sharedscripts #所有文件归档完成后执行脚本
-
postrotate #日志切割后执行的脚本命令
-
nginx -s reload
-
echo "well down , nginx logs have rotated"
-
endscript
-
}
测试切割配置是否有效:
-
logrotate -dvf /etc/logrotate.d/nginx
备注:
可以设置成当日志文件达到多大时进行切割归档详细的logrotate说明请man logrotate
阅读(802) | 评论(0) | 转发(0) |