1. 程式人生 > >nginx 日誌格式化,按天分割 並刪除七天的日誌

nginx 日誌格式化,按天分割 並刪除七天的日誌

對於nginx日誌格式化

Log_format:用於定製Nginx日誌的輸出格式   main 為此日誌格式名稱  可以在下面的access_log命令中引用

Log_format   name(格式名稱)   日誌格式  

log_format main   '$server_name $remote_addr - $remote_user [$time_local] "$request" '
                  '$status $uptream_status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for" '
                  '$ssl_protocol $ssl_cipher $upstream_addr $request_time $upstream_response_time'

$server_name:虛擬主機名稱。
$remote_addr:遠端客戶端的IP地址。
-:空白,用一個“-”佔位符替代,歷史原因導致還存在。
$remote_user:遠端客戶端使用者名稱稱,用於記錄瀏覽者進行身份驗證時提供的名字,如登入百度的使用者名稱scq2099yt,如果沒有登入就是空白。
[$time_local]:訪問的時間與時區,比如18/Jul/2012:17:00:01 +0800,時間資訊最後的"+0800"表示伺服器所處時區位於UTC之後的8小時。
$request:請求的URI和HTTP協議,這是整個PV日誌記錄中最有用的資訊,記錄伺服器收到一個什麼樣的請求
$status:記錄請求返回的http狀態碼,比如成功是200。

$uptream_status:upstream狀態,比如成功是200.
$body_bytes_sent:傳送給客戶端的檔案主體內容的大小,比如899,可以將日誌每條記錄中的這個值累加起來以粗略估計伺服器吞吐量。
$http_referer:記錄從哪個頁面連結訪問過來的。 
$http_user_agent:客戶端瀏覽器資訊
$http_x_forwarded_for:客戶端的真實ip,通常web伺服器放在反向代理的後面,這樣就不能獲取到客戶的IP地址了,通過$remote_add拿到的IP地址是反向代理伺服器的iP地址。反向代理伺服器在轉發請求的http頭資訊中,可以增加x_forwarded_for資訊,用以記錄原有客戶端的IP地址和原來客戶端的請求的伺服器地址。

$ssl_protocol:SSL協議版本,比如TLSv1。
$ssl_cipher:交換資料中的演算法,比如RC4-SHA。 
$upstream_addr:upstream的地址,即真正提供服務的主機地址。 
$request_time:整個請求的總時間。 

$upstream_response_time:請求過程中,upstream的響應時間。

在負載均衡代理中server 可以引用如上的log格式

server {    listen 80;    
              server_name XXXX    
              root  /var/advert;    
              proxy_next_upstream http_502 http_504 error timeout  invalid_header;    
              proxy_set_header Host  $host;    
              proxy_set_header X-Real-IP $remote_addr;    
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    
              proxy_ignore_client_abort on;    
              access_log logs/api_access_log main; 這裡進行引用main 日誌格式化    
     }

###############################################################################################

日誌按天分割並刪除七天前的日誌   在nginx 版本1.6以後均自動新增日誌按天分割並壓縮

#!/bin/bash
DATE=`date -d "7 day ago" +%Y%m%d`
cd /usr/local/nginx/logs
rm -rf  "access.log-$DATE.gz"
rm -rf  "api_access_log-$DATE.gz"
rm -rf  "error.log-$DATE.gz"