1. 程式人生 > >nginx 日誌文件

nginx 日誌文件

mkdir 我們 除了 connect bin pipelined /usr 請求頭 quest

我們觀察nginx的server段,可以看到如下類似信息
#access_log logs/host.access.log main;
這說明 該server, 它的訪問日誌的文件是 logs/host.access.log ,
使用的格式”main”格式.
除了main格式,你可以自定義其他格式.

main格式是什麽?

log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘

# ‘$status $body_bytes_sent "$http_referer" ‘

# ‘"$http_user_agent" "$http_x_forwarded_for"‘;

$remote_addr, $http_x_forwarded_for 記錄客戶端IP地址
$remote_user 記錄客戶端用戶名稱
$request 記錄請求的URL和HTTP協議
$status 記錄請求狀態
$body_bytes_sent 發送給客戶端的字節數,不包括響應頭的大小; 該變量與Apache模塊mod_log_config裏的“%B”參數兼容。
$bytes_sent 發送給客戶端的總字節數。
$connection 連接的序列號。
$connection_requests 當前通過一個連接獲得的請求數量。
$msec 日誌寫入時間。單位為秒,精度是毫秒。
$pipe 如果請求是通過HTTP流水線(pipelined)發送,pipe值為“p”,否則為“.”。
$http_referer 記錄從哪個頁面鏈接訪問過來的
$http_user_agent 記錄客戶端瀏覽器相關信息
$request_length 請求的長度(包括請求行,請求頭和請求正文)。
$request_time 請求處理時間,單位為秒,精度毫秒; 從讀入客戶端的第一個字節開始,直到把最後一個字符發送給客戶端後進行日誌寫入為止。
$time_iso8601 ISO8601標準格式下的本地時間。
$time_local 通用日誌格式下的本地時間。

1. 聲明一個獨特的log_format並命名

log_format mylog ‘$remote_addr- "$request" ‘

‘$status $body_bytes_sent "$http_referer" ‘

‘"$http_user_agent" "$http_x_forwarded_for"‘;

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

access_log logs/access_8080.log mylog;

聲明log log位置 log格式;

==日誌分割==日誌分割==日誌分割==日誌分割==日誌分割==日誌分割==日誌分割==

分割腳本 fenge.sh

#!/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`

然後設置計劃任務,每天晚上分割一次

nginx 日誌文件