Nginx日誌分割Shell腳本,按天分類存儲並刪除超過7天的日誌

若是使用LNMP網站環境的話,默認nginx只會生成一個訪問日誌,而且是在天天的積累,日誌文件會變的很是大,若是須要作一下日誌的分析,不管是使用腳本分析,仍是把日誌下載本地分析,都不太方便。天天分割Nginx的訪問日誌,有利於分析日誌。html

腳本內容:nginx

#!/bin/bash
# a nginx access log segmentation shell script
# www.1987.name

cd /data/wslogs
log_dir="/data/wslogs"
time=`date +%Y%m%d`
nginx_dir="/usr/local/webserver/nginx"

#日誌分割,按天分類
website=`ls $log_dir/access* | xargs -n 1 | cut -f 2 -d "."`
for i in $website
do
  mkdir -p $log_dir/backup/$time/$i
  mv $log_dir/access.$i.log $log_dir/backup/$time/$i/$time.log
done
$nginx_dir/sbin/nginx -s reload

#刪除全部超過7天日誌。
if [ "`date +%a`" = "Sun" ]; then
  all_list=`ls $log_dir/backup | xargs -n 1`
  for del in $all_list
  do
    let results=$time-$del
    if [ $results -gt 7 ]; then
      rm -fr $log_dir/backup/$del
    fi
  done
fi

須要注意的是:由於我的須要,Nginx訪問日誌命名格式必須是access.域名.log,例如:access.www_1987_com.log,域名中原來的點.必須換成其餘字符,好比下劃線_web

代碼中的一些位置參數能夠根據本身須要修改,修改/etc/crontab文件,加入00 00 * * * root /data/logcron.sh,天天零點執行。shell

參考連接:bash

http://www.1987.name/682.html網站

相關文章
相關標籤/搜索