Nginx日誌配置及分割

2021-08-13 11:16:14 字數 2938 閱讀 4923

log_format 語法

log_format    formatname    formatparams
log_format 語法描述
log_format              宣告乙個日誌格式

formatname 格式化名稱, 相當於函式名

formatparams 引數列表, 相當於函式體

log_format 引數列表
$msec                   日誌寫入時間

$remote_addr 客戶端ip

$remote_user 客戶端使用者名稱

$http_user_agent 客戶端瀏覽器資訊

$http_x_forwarded_for 客戶端ip(反向**)

$time_local 請求時區

$time_iso8601 iso8601格式時間

$request_time 請求時間

$connection 連線的序列號

$connection_requests 連線的請求數

$request 請求的url和http協議

$request_body 請求引數

$request_length 請求體長度

$status 請求的狀態碼

$http_referer 請求的源位址

$body_bytes_sent 返回體位元組數(不包括相應頭)

$bytes_sent 返回體總位元組數

access_log 語法
access_log

logpath

[formatname]

access_log 語法描述
access_log             輸出格式化的日誌到日誌檔案

logpath 日誌檔案路徑

formatname 格式化名稱

編輯指令碼
tianshl@tianshl nginx $ vim nginx_log_division.sh
指令碼內容
#! /bin/sh

# 昨天日期

yesterday=`date -v -1d +%y%m%d`

# 日誌目錄

log_path="/usr/local/var/log/nginx/"

# sdk日誌路徑

sdk_path=$sdk

# 以天為單位切分日誌

mv -f

$.log $_$.log

# 重新生成日誌檔案

pid_path="/usr/local/var/run/nginx.pid"

sudo kill -usr1 `cat $`

定時任務

切換到root身份

tianshl@tianshl nginx $ sudo su root
編輯 crontab
sh-3.2

# crontab -e

crontab 新增一行
00*

** sh /usr/local/var/log/nginx/nginx_log_division.sh

檢視是否新增成功
sh-3.2

# crontab -l

server 段增加以下**
if ($time_iso8601 ~ "(\d)-(\d)-(\d)")
日誌檔案路徑中增加日期引數
access_log /var/log/nginx/api-$time.log;
舉個栗子
events 

}}

栗子描述
1. 訪問/sdk時會生成當天時間的日誌檔案,當檔案存在時則追加內容,檔案不存在時自動建立。

2. 同理可以按年、月、日、小時、分鐘、秒等進行切割。

編輯配置檔案, 例如 nginx.conf
tianshl@tianshl ~ $ vim /usr/local/etc/nginx/nginx.conf
配置內容
events 

}}

重啟 nginx
tianshl@tianshl ~ $ sudo nginx
nginx 啟動成功後自動生成四個日誌檔案
tianshl@tianshl ~ $ cd /usr/local/var/log/nginx

tianshl@tianshl nginx $ ls

access.log api.log

error.log sdk.log

檢視日誌
tianshl@tianshl nginx $ tail -f *.log

==> access.log <==

==> api.log <==

==> error.log <==

==> sdk.log <==

發起sdk請求並檢視日誌
==> sdk.log <==

127.0.0.1 - 502

測試結果
測試通過

Nginx 配置優化 日誌分割

生產環境中的伺服器,由於訪問日誌增長素的非常快,日誌太大會嚴重影響伺服器的效率,同時,為了方便對日誌進行分析計算,必須對日誌檔案進行定時切割,定時切割的方式有 按月切割 按天切割 按小時切割等等。當然了最常用的還是 按天切割。root localhost logs pwd usr local ngi...

nginx日誌分割

以下這個指令碼實施的核心是 每天凌晨將日誌檔案壓縮並移動到相應的年份月份目錄下,然後重新生成日誌檔案,同時記錄日誌 bin bash logs path home wwwlog 日誌存放位置 year date y 年份 month date m 月份 day date y m d 日期 time ...

Nginx 日誌分割

usr bin bash 日誌檔案存放目錄 logs path var log nginx nginx程序pid nginx pid cat var run nginx.pid 日誌名稱 logs name date d yesterday y m d 改名 mv logs path access....