nginx配置日誌和定時分割日誌

2022-03-02 12:33:36 字數 2822 閱讀 8664

nginx日誌主要分為兩種:

access_log(訪問日誌)和error_log(錯誤日誌)。

通過訪問日誌我們可以得到使用者的ip位址、瀏覽器的資訊,請求的處理時間等資訊。錯誤日誌記錄了訪問出錯的資訊,可以幫助我們定位錯誤的原因。

可以應用access_log指令的作用域分別有http,server,location,limit_except。也就是說,在這幾個作用域外使用該指令,nginx會報錯。

access_log /usr/local/nginx/logs/www.nginx.log
不指定則使用nginx.conf裡面,預設 log_format 格式

我們開啟nginx.conf定位到log.format,配置

';指定使用該格式

分割,打包,刪除歷史,日誌

新增shell指令碼 nginx-logs-rotate.sh

#!/bin/bash

# description: rotate nginx access logs

logfile="

/usr/local/nginx/cron/cron.log

"#分割和打包日誌檔案

ngx_pid=`cat /usr/local/nginx/logs/nginx.pid`

logs_dir="

/usr/local/nginx/logs

"#nginx預設log目錄

www_log_name="

www.nginx.log

"#nginx預設log的名稱

access_log_name="

access.log

"error_log_name="

error.log

"place_dir="

/usr/local/nginx/logs/place/

"#nginx分割後log存放目錄

log1="

$(date +%f -d 'yesterday')_$www_log_name

"#nginx分割後log的名稱

log2="

$(date +%f -d 'yesterday')_$access_log_name

"log3="

$(date +%f -d 'yesterday')_$error_log_name

"#分割

cd $logs_dir

mv$www_log_name $place_dir$log1

mv$access_log_name $place_dir$log2

mv$error_log_name $place_dir$log3

/bin/kill -usr1 $ngx_pid

#打包if [[ $? == 0 ]]; then

cd $place_dir

tar czvf $(date +%f -d '

yesterday

').tar.gz $log1 $log2 $log3 >>$logfile #判斷是否成功,則壓縮。

echo

"$log1 successful!

" >>$logfile

rm -f $log1

rm -f $log2

rm -f $log3

else

echo

"fail!

" >>$logfile

fi#刪除歷史日誌

keeptime=1

#定義需要刪除的檔案距離當前的天數

delfile=`find $place_dir -type f -mtime +$keeptime -exec ls

{} \;` #找到天數大於多少天的檔案

for delfile in

$ #迴圈刪除滿足天數大於多少天的檔案

dorm -f $delfile

done

加入crontab定時任務

crontab -e

0

0 * * * /usr/local/nginx/cron/nginx-logs-rotate.sh

分割前的日誌

分割後打包的日誌

Windows下nginx定時分割日誌

nginx大多是在linux環境下使用,nginx的日誌分割在linux也好實現。我現在在windows環境下執行nginx,要做日誌分割。但是在網上找了一圈,大多是需要借助unxutils這個工具來獲取前一天的時間。其實在windows環境下,可以用vb指令碼來實現獲取前一天時間的功能。下面是我的...

nginx日誌分割(linux定時器定時分割)

nginx安裝目錄下的logs資料夾下,主要有三個檔案,access.log,error.log,nginx.pid。其中access.log和error.log是nginx的預設日誌檔案,如果沒有配置策略,nginx一直跑,這兩個檔案會變得越來越大,不易管理。因此可以將日誌檔案進行分割,乙個月分割...

linux配置nginx定時日誌分割

指令碼內容 bin sh program auto cut nginx log script.nginx日誌路徑 today date d today y m d 移動日誌並改名 mv error.log error log mv access.log access log 向nginx主程序傳送重...