Nginx日志按天自动切割

Posted 刘元涛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx日志按天自动切割相关的知识,希望对你有一定的参考价值。

使用nginx做反向代理,代理了3台服务器,由于所有的访问都经过Nginx,发现access日志增长的很快,时间长了,日志文件难免会变得很大,打开查看很不方便,而且会影响服务器性能,因此有必要对nginx日志进行每日切割保存,减小文件大小,同时也更方便查看日志。

实现思路

shell脚本+定时任务+nginx信号控制,完成日志定时切割。

具体步骤

在需要保存日志或者是其他目录,新建一个shell脚本。

vim /usr/local/openresty/nginx/logs/log_rotate.sh

编辑内容如下:

#!/bin/bash
#安装目录下日志文件
base_log_path='/usr/local/openresty/nginx/logs/access.log'
base_error_path='/usr/local/openresty/nginx/logs/error.log'

#需要保存的目录位置
log_path='/data_lytdev_dir/nginx/logs/'

#获取月份
log_month=$(date -d yesterday +"%Y%m")

#获取前一天日期 (第二天凌晨备份,即保存的日志就是当天时间的日志)
log_day=$(date -d yesterday +"%d")

#在指定位置创建文件夹
mkdir -p $log_path/$log_month

#将安装目录下的日志文件,移动到指定存储位置
mv $base_log_path $log_path/$log_month/access_$log_day.log
mv $base_error_path $log_path/$log_month/error_$log_day.log

#再使用信号控制切割日志
#USR1 表示nginx信号控制,切割日志
kill -USR1 `cat /usr/local/openresty/nginx/logs/nginx.pid`


#每天凌晨1点切割日志
* 1 * * * /usr/local/openresty/nginx/logs/log_rotate.sh

赋予脚本可执行权限:

chmod u+x log_rotate.sh

执行测试:

./log_rotate.sh

发现备份的目录有日志文件,并且原来的access.log变的很小,说明脚本执行成功。

图片

设置定时任务:

crontab -e

添加如下内容:

#每天凌晨1点切割日志
* 1 * * * /usr/local/openresty/nginx/logs/log_rotate.sh

大功告成,日志按天自动切割的功能就完成了!

以上是关于Nginx日志按天自动切割的主要内容,如果未能解决你的问题,请参考以下文章

Nginx日志按天自动切割

Nginx日志按天自动切割

Nginx日志按天自动切割

NGINX按天切割日志

nginx按天切割日志

nginx日志按天切割shell