nginx日志文件切割

使用脚本对nginx日志文件进行按天切割

#!/bin/bash
LOGS_PATH=/usr/local/nginx/logs
YESTERDAY=$(date -d -1day +%Y%m%d)
cd ${LOGS_PATH}
#按天切割日志
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log
#向 Nginx 主进程发送 USR1 信号,重新打开日志文件,否则会继续往mv后的文件写内容,导致切割失败
kill -USR1 `ps axu | grep nginx| grep master | awk '{print $2}'`
#压缩
gzip -9 ${LOGS_PATH}/access_${YESTERDAY}.log
#删除7天前的日志
find . -mtime +7 -name "*20[1-9][3-9]*" | xargs rm -f
exit 0

然后配置crontab进行每天切割使用

使用logrotate对nginx日志进行切割

[root@iZ25b31bdp0Z gitlab-8.5.7-0]# cat /etc/logrotate.d/nginx 
/var/log/nginx/*log {
    create 0644 nginx nginx
    daily         //可以选择weekly,monthly,切割周期
    rotate 10    //一次存储10个文件,超出数量最早生成的文件会被删除
    missingok    //忽略错误
    notifempty   //空文件不存储
    compress    //启动压缩
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript  
//其它命令执行完成后,再执行postrotate与endscript中间的命令,两者是固定格式
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Nginx用户认证 我一直很怀疑为什么nginx用户认证要安装Apache,我仔细想了想所有的步骤,只有生成...
    石乐志的LK阅读 1,280评论 0 0
  • 了解日志文件是很重要的事情。日志文件可以记录系统在什么时间、哪台主机、哪个服务、出现了什么信息等。可以在系统出现问...
    Zhang21阅读 5,385评论 0 5
  • nginx是一个高性能的HTTP和反向代理服务器,以其轻量级、资源占用少、并发能力强等优点被广泛使用。 在使用过程...
    活成理想中的样子阅读 3,446评论 0 3
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,248评论 19 139
  • A4腰近来大火。不知道有多少人偷偷或故意明目张胆地拿起一张A4纸,放在自己的腰迹比划,还有好多人拍了照片发网上。于...
    彼小清阅读 236评论 0 2