nginx日誌分割

一、應用場景nginx

    當網站訪問量大後,日誌數據就會不少,若是所有寫到一個日誌文件中去,文件會變得愈來愈大。文件大速度就會慢下來,好比一個文件幾百兆。寫入日誌的時候,會影響操做速度。另外,若是我想看看訪問日誌,一個幾百兆的文件,下載下來打開也很慢。shell

二、shell腳本bash

    nginx-log-split.sh
網站

    #!/bin/bashspa

    base_path='/home/wwwlogs'                            # nginx設置的日誌保存目錄日誌

    log_path=$(date -d yesterday +"%Y%m")        # 日誌分割以後保存地址orm

    day=$(date -d yesterday +"%d")                      # 日誌名進程

    mkdir -p $base_path/$log_pathit

    mv $base_path/access.log $base_path/$log_path/access_$day.logast

    kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

    一、nginx 的主進程收到USR1信號,會從新打開日誌文件(以nginx配置文件中的日誌名稱命名,就是配置文件中access_log項所設置的值,若是文件不存在,會自動建立一個新的文件xxx.log)。

   二、而後把日誌文件的擁有者改成「工做進程(worker進程)」,目的是讓worker進程就具有了對日誌文件的讀寫權限(master和worker一般以不一樣用戶運行,因此須要改變擁有者)。

   三、nginx主進程會關閉重名的日誌文件(也就是剛纔使用mv命令重命名成xxx.log_ 20130909.log的文件),並通知工做進程使用新打開的日誌文件(剛纔主進程打開的文件xxx.log)。具體實現上更細化點就是,主進程把USR1信號發給worker,worker接到這個信號後,會從新打開日誌文件(也就是配置文件中約定的xxx.log)

三、nginx日誌分割下載到本地

    能夠經過ansys完成

相關文章
相關標籤/搜索