nginx日志切割

nginx日志如果不做切割,一个大型网站访问量很大就造成单个日志文件非常大的情况,不利于日志查询分析。当然也可以通过接入ELK或者阿里云日志服务等方式进行查询分析。这里说一下nginx日志切割的两种方式:

1、利用Linux自带的logrotate方法进行日志轮转

         在 /etc/logrotate.d 新建 nginx
cat  /etc/logrotate.d/nginx
/usr/local/nginx/logs/access.log {
    daily
    rotate 1450
    missingok
    notifempty
 #  compress
    sharedscripts
    postrotate
       [ ! -f /usr/local/nginx/logs/nginx.pid ] || kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
    endscript
}

logrotate具体参数还是比较多的,这里不做说明。有需要的可自行百度

2、自己编写shell或者python脚本进行日志切割

shell方式实现nginx日志切割:

#!/bin/bash
#此脚本用于自动分割Nginx的日志,包括access.log和error.log
#每天00:00执行此脚本 将前一天的access.log重命名为access-xxxx-xx-xx.log格式,并重新打开日志文件
#Nginx日志文件所在目录
LOG_PATH=/usr/local/nginx/logs/
CUT_NGINXLOG=/usr/local/nginx/logs/cut_nginxlog/
#获取昨天的日期
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
#上面的日期也可以是:date -d "yesterday" +%F

#获取pid文件路径
PID=/usr/local/nginx/logs/nginx.pid
#分割日志
mv ${LOG_PATH}access.log ${CUT_NGINXLOG}access-${YESTERDAY}.log
mv ${LOG_PATH}error.log ${LOG_PATH}error-${YESTERDAY}.log
#向Nginx主进程发送USR1信号,重新打开日志文件
kill -USR1 `cat ${PID}`

这里的nginx是我自己编译安装的,路径和日志文件名如果再生产上有不同的地方,需要自行更改成你自己的路径和文件名。

个人生产常用的是利用shell切割的方式 ,比较简洁明了。

版权声明:
作者:allenjol
链接:https://www.ayunw.cn/archives/779
来源:爱生活,爱运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>