可以根据需要改变成自己喜欢的日志保存格式,我这里的日志保存方式是:按照年月来创建文件夹,每日日志文件添加年月日的后缀形式,比如:/var/log/2013/11/letuknowit_20131110.log

#!/bin/bash

# 日志文件保存的位置
logs_path="/alidata/log/nginx/access/"

# 需要切割的日志文件名,多个文件用空格隔开
logs_name=(xxx)

mkdir -p ${logs_path}$(date -d "yesterday" +"%Y/%m")
num=${#logs_name[@]}
for((i=0;i<num;i++));do
        echo ${logs_path}$(date -d "yesterday" +"%Y/%m")/${logs_name[i]}_$(date -d "yesterday" +"%Y%m%d").log
done

kill -USR1 `cat /alidata/server/nginx/logs/nginx.pid`

上面的xxx换成自己的日志文件名,如果有多个日志文件,用空格隔开,比如主站的日志文件为letu.log,二级域名的日志文件为blog.log,则logs_name如下:

logs_name=(letu blog)

日志名一般在nginx的配置文件中进行设置,如下面的设置

log_format  letu  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
access_log  /alidata/log/nginx/access/letu.log letu;

转载请注明:知识蚂蚁 » nginx日志定时切割脚本(支持多个域名的日志文件)

我来说说

(便于我们更好的交流)

有不明白的地方欢迎留言哦~
取消