一、通过系统自带的logrotate工具自动轮转切割–→ 修改/etc/logrotate.d/nginx 里参数文件
vim /etc/logrotate.d/nginx
/var/log/nginx/*.log { #指定需要轮转处理的日志文件
daily #日志文件轮转周期,可用值为: daily/weekly/yearly
missingok # 忽略错误信息
rotate 7 # 轮转次数,即最多存储7个归档日志,会删除最久的归档日志
minsize 5M #限制条件,大于5M的日志文件才进行分割,否则不操作
dateext # 以当前日期作为命名格式
compress # 轮循结束后,已归档日志使用gzip进行压缩
delaycompress # 与compress共用,最近的一次归档不要压缩
notifempty # 日志文件为空,轮循不会继续执行
create 640 nginx nginx #新日志文件的权限
sharedscripts #有多个日志需要轮询时,只执行一次脚本
postrotate # 将日志文件转储后执行的命令。以endscript结尾,命令需要单独成行
if [ -f /var/run/nginx.pid ]; then #判断nginx的PID。# 默认logrotate会以root身份运行
kill -USR1 cat /var/run/nginx.pid #重新生成一个日志文件
fi
endscript
}
########################################################
修改完上面配置后手动切割 :/usr/sbin/logrotate -f /etc/logrotate.conf #执行完后就立马切割,可以利用计划任务自动求个
crontab -e #执行后添加如下:
59 23 * * * /usr/sbin/logrotate -f /etc/logrotate.conf #时间可以自己定义
二、通过shell脚本+计划任务自动切割
vim /root/nginx_log.sh
#!/usr/bin/bash
date=date "+%F"
mv /var/log/nginx/access.log /var/log/nginx/access.
d
a
t
e
m
v
/
v
a
r
/
l
o
g
/
n
g
i
n
x
/
e
r
r
o
r
.
l
o
g
/
v
a
r
/
l
o
g
/
n
g
i
n
x
/
e
r
r
o
r
.
date mv /var/log/nginx/error.log /var/log/nginx/error.
datemv/var/log/nginx/error.log/var/log/nginx/error.date
if [ -f /var/run/nginx.pid ];then
kill -USR1 cat /var/run/nginx.pid
#这个命令可换成nginx -s reload 只实现了能切割,在生成是否会宕机未知
fi
########这里的脚本只做到切割日志,压缩等未实现,可以自己加###########
crontab -e #执行后添加如下:
59 23 * * * /usr/bin/bash /root/nginx_log.sh