對於main(配置在nginx.conf)格式如下定義:
#日誌文件輸出格式 這個位置相當於全局設置
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
2、查看日誌內容命令
tail -n 100 -f nginx/logs/access.log
logs目錄下的文件說明:access.log:表示的是訪問日誌;
error.log:錯誤日誌
nginx.pid:nginx主進程id文件
3、配置nginx自定義日誌
放開1中註釋的內容:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
放開該段註釋,下面引用main日誌的配置在顯示日誌時就會顯示成對應的日誌格式信息。新增虛擬主機:
server {
listen 1234;
server_name bhz.com;
location / {
root bhz.com;
index index.html;
}
access_log logs/host.access.log main;
}
啓動nginx服務,訪問nginx80端口默認的頁面即可,上面的代碼是自己配置的實例。注意在測試日誌時,可以不用上面的例子,同時注意瀏覽器緩存。nginx日誌分割採用的是定義日誌顯示格式,再在每個Server中分別定義自己的日誌的方式去實現的。
4、nginx日誌分割策略
我們在日常工作中,對nginx日誌的分析非常的重要,通常需要運維去對nginx的日誌進行切割和分析處理。比如實現一個定時任務,去處理nginx日誌等。
第一步:分析如何去實現日誌切分,編寫shell腳本。
第二步:定時任務對腳本進行調度:crontab -e
基本的策略是採用定時器在某個時間點執行下面的腳本。
log.sh中的內容如下:
#!/bin/sh
BASE_DIR=/usr/local/nginx
BASE_FILE_NAME=sunft.com.access.log
CURRENT_PATH=$BASE_DIR/logs
BAK_PATH=$BASE_DIR/datalogs
CURRENT_FILE=$CURRENT_PATH/$BASE_FILE_NAME
#備份時間,時間只精確到年月日
BAK_TIME=`/bin/date -d yesterday +%Y%m%d%H%M`
BAK_FILE=$BAK_PATH/$BAK_TIME-$BASE_FILE_NAME
#查看備份文件
echo $BAK_FILE
#備份前停掉nginx
$BASE_DIR/sbin/nginx -s stop
#移動日誌文件
mv $CURRENT_FILE $BAK_FILE
#重啓nginx
$BASE_DIR/sbin/ngin