Nginx 訪問日誌輪詢切割

2022-07-04 22:54:16 字數 2860 閱讀 6406

預設情況下 nginx 會把所有的訪問日誌生成到乙個指定的訪問日誌檔案 access.log 裡,但這樣一來,時間長了就會導致日誌個頭很大,不利於日誌的分析和處理,因此,有必要對 nginx 日誌,按天或按小時進行切割,使其分成不同的檔案儲存。這裡使用按天切割的方法。

#!/bin/bash

# this script run at 00:00

# the nginx logs path

logs_path="/usr/local/nginx/logs/"

mkdir -p $$(date -d "yesterday" +"%y")/$(date -d "yesterday" +"%m")/

mv $access.log $$(date -d "yesterday" +"%y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%y%m%d").log

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

#!/bin/bash

dateformat=`date +%y%m%d`

basedir="/usr/local/nginx"

nginxlogdir="$basedir/logs"

logname="access"

[ -d $nginxlogdir ] && cd $nginxlogdir || exit

1[ -f $.log ] || exit

1/bin/mv $.log $_$.log

$basedir/sbin/nginx -s reload

賦許可權

chmod +x /usr/local/nginx/cut_nginx_log.sh

設定計畫任務,每天凌晨00:00切割nginx訪問日誌

cat >> /var/spool/cron/root << eof

#nginx日誌切割

0000 * * * /bin/bash /usr/local/nginx/cut_nginx_log.sh

eof

#!/bin/bash

function

rotate

() $.$(date -d "yesterday" +"%y%m%d")

> $

rm -f $.$(date -d "7 days ago" +"%y%m%d")}

for i in $*

do rotate $i

done

賦許可權

chmod +x /usr/local/nginx/log_rotate.sh

手動執行切割:

find /usr/lcoa/nginx/logs/ -size +0 -name '*.log' | xargs /usr/local/nginx/log_rotate.sh

設定計畫任務每天凌晨00:00對nginx日誌進行切割,0k的日誌不進行切割:

cat >> /var/spool/cron/root << eof

#nginx日誌切割

300 * * * find /usr/lcoa/nginx/logs/ -size +0 -name '*.log' | xargs /usr/local/nginx/log_rotate.sh

eof

python指令碼如下(log_rotate.py):

#!/usr/bin/env python

import datetime,os,sys,shutil

log_path = '/usr/local/nginx/logs/'

log_file = 'access.log'

yesterday = (datetime.datetime.now() - datetime.timedelta(days = 1))

try:

os.makedirs(log_path + yesterday.strftime('%y') + os.sep + \

yesterday.strftime('%m'))

except oserror,e:

print

print e

sys.exit()

shutil.move(log_path + log_file,log_path \

+ yesterday.strftime('%y') + os.sep \

+ yesterday.strftime('%m') + os.sep \

+ log_file + '_' + yesterday.strftime('%y%m%d') + '.log')

os.popen("sudo kill -usr1 `cat /usr/local/nginx/logs/nginx.pid`")

賦許可權

chmod +x /usr/local/nginx/log_rotate.py

設定計畫任務,每天凌晨00:00切割nginx訪問日誌

cat >> /var/spool/cron/root << eof

#nginx日誌切割

0000 * * * /usr/bin/python /usr/local/nginx/log_rotate.py

eof

logrotate日誌管理工具

nginx日誌輪詢切割實戰

apache切割工具 cronlog 和rotare等日誌切割工具 nginx切割工具有 nginx cron x scripts 1 2 3 4 5 6 root web01 mkdir p server scripts root web01 cd server scripts root web0...

NGINX訪問日誌和日誌切割

當我們訪問nginx服務時,nginx會記錄日誌,nginx日誌分兩種,一種是訪問日誌,一種是錯誤日誌,訪問日誌記錄在 access.log 檔案中,錯誤日誌記錄在 error.log 檔案中 編譯安裝了nginx,預設情況下,access.log日誌會放在nginx安裝路徑的logs目錄中 roo...

nginx自動切割訪問日誌

web 訪問日誌 access log 記錄了所有外部客戶端對web伺服器的訪問行為,包含了客戶端ip,訪問日期,訪問的url資源,伺服器返回的http狀態碼等重要資訊。一條典型的web訪問日誌如下 規劃 1 要解決問題 2 nignx沒有自動分開檔案儲存日誌的機制。由於nginx它不會幫你自動分檔...