>  기사  >  백엔드 개발  >  nginx 또는 tengine 액세스 로그 분할 처리

nginx 또는 tengine 액세스 로그 분할 처리

WBOY
WBOY원래의
2016-07-29 09:08:061356검색

naginx를 사용하다 보면 접속 로그가 점점 커지고 GB급에 이를 수 있으니 분할해야 하는데,

시간별로 분할해 봤는데,

#!/bin/bash

#访问日志文件位置
nginx_path="/usr/local/nginx/logs/"
bak_path="/usr/local/nginx/logs/dowload/"
#本程序log位置  包含文件名
log_path="/usr/local/nginx/logs/mv_log.log"
#文件夹名称英文逗号分隔
access_name="dir1,dir2,dir3,dir4,dir5,dir6"
#nginx pid文件位置
nginx_pid_path="/usr/local/nginx/logs/nginx.pid"
DATE=$(date +%Y-%m-%d )
log_time=$(date +%Y-%m-%d_%H:%M:%S)
echo "time ${DATE}"
echo $log_time
OLD_IFS="$IFS"
IFS=","
arr=($access_name)
IFS="$OLD_IFS"
echo "####################### mv log ${log_time}  #####################################"  >>${log_path}
for s in ${arr[@]}
do
    src_path=$nginx_path"/"$s"/"access_$s.log
    #echo $nginx_path"/"$s"/"access_$s.log
    echo "####($s)_ start_${log_time} ####" >> ${log_path}
    if [ -f "$src_path" ]; then 
        mv $src_path $bak_path$s"/"access_${log_time}.log  2>> ${log_path}
        #防止文件过大或过多 每个进行复制和发送变量
        kill -USR1 `cat ${nginx_pid_path}`
	#echo "  $s move Success  " >>${log_path}
    else
       echo "##($s)_NOT_FIND_FILE_${log_time} ##" >> ${log_path}
    fi
    echo "####($s)_end_${log_time} ######" >> ${log_path}
    echo " " >>${log_path}
done
echo "######################## END LOG #################################################"  >> ${log_path}
echo "" >>${log_path}
echo "" >>${log_path}

위의 내용을 포함하여 nginx 또는 tengine 액세스 로그 분할 처리에 대해 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.