nginx按日期生成日志 nginx日志切割

nginx的日志文件没有办法按天切割

网上的其他办法:mv文件,然后再重启nginx生成空的日志文件

但这样,还需要重启nginx,总是感觉有点太过周张

 

新的办法:cp文件,利用/dev/null清空日志文件

1:cp日志文件

2:cat /dev/null > 日志文件

 

具体代码:

----------

/data/log/:切割日志存放目录

----------

/data/nginx/logs/:为nginx原始日志存放的目录(请根据自己情况修改)

nginx_log_1.log:为需要切割的日志文件(请根据自己情况修改)

----------

1: 每次操作会生成操作日志 /data/log/op-2018_11_23.log

2:切割日志,会按天存放在:/data/log/2018/11/23/

 

#Create by skyhh 2018-11-23

#变量
#1:操作日志 /data/log/op-2018_11_23.log
fileDate=$(date +"%Y_%m_%d")
logfilePath="/data/log/op-"$fileDate".log"

#2:切割存放目录 /data/log/2018/11/23/
datePath=$(date +"%Y/%m/%d")
fullPath="/data/log/"$datePath

echo $(date +"%Y-%m-%d %H:%M:%S")" 开始切割" >> $logfilePath

#3:判断日志
if [ ! -d $fullPath ];then
	mkdir -p $fullPath
else
	#日志
	echo $(date +"%Y-%m-%d %H:%M:%S")" 文件夹已经存在" >> $logfilePath
fi

#开始文件切割

#1
filename="nginx_log_1.log"

cp /data/nginx/logs/$filename $fullPath"/"$filename
echo $(date +"%Y-%m-%d %H:%M:%S")" 切割"$filename >> $logfilePath
cat /dev/null > /data/nginx/logs/$filename
echo $(date +"%Y-%m-%d %H:%M:%S")" 完成"$filename >> $logfilePath

#有几个需要切割的文件,就写几个

#2
filename="nginx_log_2.log"

cp /data/nginx/logs/$filename $fullPath"/"$filename
echo $(date +"%Y-%m-%d %H:%M:%S")" 切割"$filename >> $logfilePath
cat /dev/null > /data/nginx/logs/$filename
echo $(date +"%Y-%m-%d %H:%M:%S")" 完成"$filename >> $logfilePath

#3
filename="nginx_log_3.log"

cp /data/nginx/logs/$filename $fullPath"/"$filename
echo $(date +"%Y-%m-%d %H:%M:%S")" 切割"$filename >> $logfilePath
cat /dev/null > /data/nginx/logs/$filename
echo $(date +"%Y-%m-%d %H:%M:%S")" 完成"$filename >> $logfilePath

#4
filename="nginx_log_4.log"

cp /data/nginx/logs/$filename $fullPath"/"$filename
echo $(date +"%Y-%m-%d %H:%M:%S")" 切割"$filename >> $logfilePath
cat /dev/null > /data/nginx/logs/$filename
echo $(date +"%Y-%m-%d %H:%M:%S")" 完成"$filename >> $logfilePath

#5
filename="nginx_log_5.log"

cp /data/nginx/logs/$filename $fullPath"/"$filename
echo $(date +"%Y-%m-%d %H:%M:%S")" 切割"$filename >> $logfilePath
cat /dev/null > /data/nginx/logs/$filename
echo $(date +"%Y-%m-%d %H:%M:%S")" 完成"$filename >> $logfilePath

#6
filename="nginx_log_6.log"

cp /data/nginx/logs/$filename $fullPath"/"$filename
echo $(date +"%Y-%m-%d %H:%M:%S")" 切割"$filename >> $logfilePath
cat /dev/null > /data/nginx/logs/$filename
echo $(date +"%Y-%m-%d %H:%M:%S")" 完成"$filename >> $logfilePath

 

ps:还可以优化,将文件写入一个数组,然后循环

 

最后:

crontab -e

0 0 * * * /data/log/log.sh

crontab -l

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值