文章都可以转载、引用,标明转载出处即可。

nginx 日志切割

nginx 服务 Mr.c 2464℃ 0评论

日志的关键性就不用多说了,对于网站的日志来说,如果网站访问量较大,每天产生的日志也是非常庞大的,nginx默认都是将日志写入到指定的日志文件中,如果日志文件变得非常大,那么自然的写入日志就较慢,如果我们需要分析日志,对于几百兆或者几G的文件,分析起来也很不方便,这里我采用的是系统自带日志轮询logrotate 对nginx 日志进行割切。
1.logrotate 的主配置文件在/etc/logrotate.conf 主配置文件无需进行调整配置,保持默认即可。
如果使用了一键安装包配置的环境,可能在/etc/logrotate.d 下已经生成了文件nginx ,如果没有,则创建该文件:

vim /etc/logrotate.d/nginx

/data/weblogs/*.log {
weekly
rotate 7
missingok
dateext
nocompress
notifempty
sharedscripts
postrotate
    [ -e /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}

配置选项说明:

/data/weblogs/*.log    # 需要切割的日志文件,可以指定为某个文件名进行切割
weekly    #指定转储周期为每周,对应的 daily:指定转储周期为每天,monthly:指定转储周期为每月
rotate 7  #指定日志文件删除之前转储的次数,0 指没有备份,7 指保留7 个备份
missingok  #如果指定的目录不存在,logrotate会报错,此项用来关闭报错
nocompress    # 这里是不进行压缩,如果需要将切割的日志进行压缩,可以设置为compress 
notifempty      #如果是空文件的话,不转储
sharedscripts  #所有的日志文件都轮转完毕后统一执行一次脚本
postrotate/endscript    #在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate 中的内容即为:nginx进程发送USR1信号使其重新打开日志并写入,不会重启服务,也不会导致最新写入的日志丢失

如果日志分类存放到不同的目录下可以这样设置:

/data/weblogs/*.log 
/data/weblogs/cnyunwei/*.log
{
weekly
rotate 7
.....

2.测试是否正确执行:

[root@aliyun weblogs]#/usr/sbin/logrotate -f /etc/logrotate.d/nginx

执行上述命令后可以查看当前日志文件下生成了www.susecui.cn.log-20160808 的文件,如果是开启了压缩,则会生成www.susecui.cn.log-20160808.gz 的压缩文件

3.创建任务计划执行命令:

如果是设置了每天进行切割日志,那么就需要单独设置计划任务,默认设置为一周切割的情况下不需要设置计划任务,logrotate 主配置文件中已经定义了每周会进行轮询。

crontab -e
10 2 * * 6 /usr/sbin/logrotate -f /etc/logrotate.d/nginx

配置选项参考自运维生存时间

转载请注明:菜鸟运维 » nginx 日志切割

喜欢 (1)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址