1. 程式人生 > >nginx日誌定時切割 按年月日

nginx日誌定時切割 按年月日

2: 宣告一個獨特的log_format並命名

   log_format  mylog '$remote_addr- "$request" '

                     '$status $body_bytes_sent "$http_referer" '

                        '"$http_user_agent" "$http_x_forwarded_for"';

在下面的server/location,我們就可以引用 mylog

 

在server段中,這樣來宣告

Nginx允許針對不同的server做不同的Log ,(有的web伺服器不支援,如lighttp)

access_log logs/access_8080.log mylog;   

宣告log   log位置          log格式;

實際應用: shell+定時任務+nginx訊號管理,完成日誌按日期儲存

分析思路:

凌晨00:00:01,把昨天的日誌重新命名,放在相應的目錄下

再USR1資訊號控制nginx重新生成新的日誌檔案

vim /usr/local/nginx/logs/nginx_logs_day.sh

具體指令碼:   (我的是吧整個日誌放到了昨天的資料夾下了

#!/bin/bash
base_path='/usr/local/nginx/logs'
log_path=$(date -d yesterday +"%Y%m%d")
day=$(date -d yesterday +"%d")
mkdir -p $base_path/$log_path
mv $base_path/*.log $base_path/$log_path/
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

也可以單獨切割某個 以access.log為例

#!/bin/bash
base_path='/usr/local/nginx/logs'
log_path=$(date -d yesterday +"%Y%m")
day=$(date -d yesterday +"%d")
mkdir -p $base_path/$log_path
mv $base_path/access.log $base_path/$log_path/access_$day.log
#echo $base_path/$log_path/access_$day.log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

新增許可權  chmod +x /usr/local/nginx/logs/nginx_logs_day.sh

定時任務

Crontab -e 編輯定時任務、

01 00 * * * /usr/local/nginx/logs/nginx_logs_day.sh   每天0時1分(建議在02-04點之間,系統負載小)