设为首页收藏本站

追梦Linux

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 496|回复: 0

nginx日志切割

[复制链接]

482

主题

485

帖子

16万

积分

CEO

Rank: 9Rank: 9Rank: 9

积分
168233

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

QQ
发表于 2016-9-12 20:17:45 | 显示全部楼层 |阅读模式
日志文件切割要求
由于 Nginx 的日志都是写在一个文件当中的,因此,我们需要每天零点将前一天的日志存为另外一个文件,这里我们就将 Nginx 位于 logs 目录中的 access.log 存为 access_[yyyy-MM-dd].log 的文件。其实 logs 目录中还有个 error.log 的错误日志文件,这个文件也需要每天切割一个,在这里就说 access.log 了,error.log 的切割方法类似。
Linux 平台切割
在 Linux 平台上进行切割,需要使用 date 命令以获得昨天的日期、使用 kill 命令向 Nginx 进程发送重新打开日志文件的信号,以及 crontab 设置执行任务周期。
先创建一个 Shell 脚本,如下:
  1. #!/bin/bash
  2. yday=`date -d yesterday +%Y-%m-%d`

  3. ngxlogpath='/usr/local/openresty/nginx/logs'
  4. bak_accesspath='/data-aws/bak/log/access'
  5. bak_errorpath='/data-aws/bak/log/error'

  6. if [ ! -d '$bak_accesspath' ];then
  7. mkdir -p $bak_accesspath
  8. fi

  9. if [ ! -d '$bak_errorpath' ];then
  10. mkdir -p $bak_errorpath
  11. fi

  12. ##cut_nginx_log
  13. mv $ngxlogpath/error.log $bak_errorpath/error_$yday.log
  14. mv $ngxlogpath/access_usersystem.log   $bak_accesspath/access_usersystem_$yday.log

  15. kill -USR1 $(cat /usr/local/openresty/nginx/logs/nginx.pid)

  16. echo 'nginx日志切割成功'
复制代码
上面这个脚本中的最后一行必须向 Nginx 的进程发送 USR1 信号以重新打开日志文件,如果不写的话,Nginx 会继续将日志信息写入 access_[yyyy-MM-dd].log 的那个文件中,这显然是不正确的。
完成之后加个crontab 任务,OK!


QQ|小黑屋|手机版|Archiver|追梦Linux ( 粤ICP备14096197号  点击这里给我发消息

GMT+8, 2019-7-17 17:36 , Processed in 0.234036 second(s), 36 queries .

Powered by 追梦Linux! X3.3 Licensed

© 2015-2017 追梦Linux!.

快速回复 返回顶部 返回列表