nginx中access日誌如何做到按時間完美切割

post200發表於2021-09-09

nginx web伺服器中access日誌,預設是不能按時間分隔的,每次日誌都是打在access.log上,這樣久而久之這個日誌檔案就特別的大,也不利於清理和管理,故此我們肯定是需要做時間上的切割的,那麼如何做到完美的切割的呢?

我們採取的方案是利用shell指令碼和crontab定時任務來做

比如新建一個nginx_time_log.sh指令碼,裡面的內容如下
(當然也可以使用linux中的logrotate來做日誌切割)

#!/bin/bash

local_path=/home/work/tp/log/webserver    #找到您伺服器中存放access日誌的目錄

cd $local_path  #進入這個目錄

mv access_log $local_path/access_log` date +%Y%m%d%H`  #把當前的access_log挪到這個時期下,其實就是相當於日誌的切分

nginx_pid=`ps -ef |grep -v grep |grep “nginx: master process “|awk -F” ” ‘{print $2}’`  #找到您nginx的程式

` kill -USR1 $nginx_pid`  #執行usr1

這樣就會先把access_log 移動到一個access_log.時間 的日誌檔案,並且會新生產一個access_log檔案

最後透過定時任務來讓這個nginx_time.sh指令碼按每小時來進行切分

crontab命令如下:

0 */1 * * * sh /xxx(您這個指令碼的存放命令)/nginx.sh  按每小時切割

日誌圖如下:
圖片描述

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2249/viewspace-2807752/,如需轉載,請註明出處,否則將追究法律責任。

相關文章