nginx日誌定時切割 按年月日
阿新 • • 發佈:2018-12-07
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點之間,系統負載小)