Nginx實戰(三) 日誌配置與切割

2021-08-14 16:23:08 字數 3254 閱讀 5659

文章目錄

1.日誌配置

1.1.

log_format

1.2.

access_log 2.

日誌切割

2.1.

配置shell指令碼

2.2.

crontab中設定定時作業

nginx中訪問日誌相關指令主要有兩條,一條是log_format,用來設定日誌的格式,另外一條是access_log,用來指定日誌文職的存放路徑、格式和快取大小。兩條指令在nginx配置檔案中的位置可以在http之間。

log_format用來設定日誌格式,格式如下所示

log_format name

(名稱)

format

(格式)

在nginx中有自己預設的日誌格式,如下內容:

這段內容什麼意思呢?我們來理解下。

$remote_user:用於記錄遠端客戶端的使用者名稱(一般為「-」)

$time_local:用於記錄訪問時間和時區

$request:用於記錄請求的url以及請求方法

$status:響應狀態碼

$body_bytes_sent:給客戶端傳送的檔案主體內容大小

$http_user_agent:使用者所使用的**(一般為瀏覽器)

現在,我們新增乙個我們自定義日誌資訊。例如,如果我們用nginx作為反向**服務,就不能獲取客戶端的真實ip位址ip了,因為經過反向**後,在客戶端和web伺服器之間增加了中間層,因此web伺服器無法直接拿到客戶端的ip。

log_format mylog 

'$remote_addr [$time_local] "$request" $status'

;

日誌格式允許包含的變數注釋,如下所示

記錄客戶端

ip位址

$remote_user

記錄客戶端使用者名稱

$request

記錄請求的

url和

協議$status

記錄請求狀態

$body_bytes_sent

傳送給客戶端的位元組數,不包括響應頭的大小;

該變數與

apache

模組mod_log_config

裡的「%

b」引數相容。

$bytes_sent

傳送給客戶端的總位元組數。

$connection

連線的序列號。

$connection_requests

當前通過乙個連線獲得的請求數量。

$msec

日誌寫入時間。單位為秒,精度是毫秒。

$pipe

如果請求是通過

流水線(

pipelined

)傳送,

pipe

值為「p

」,否則為「.」。

記錄從哪個頁面鏈結訪問過來的

記錄客戶端瀏覽器相關資訊

$request_length

請求的長度(包括請求行,請求頭和請求正文)。

$request_time

請求處理時間,單位為秒,精度毫秒;

從讀入客戶端的第乙個位元組開始,直到把最後乙個字元傳送給客戶端後進行日誌寫入為止。

$time_iso8601 iso8601

標準格式下的本地時間。

$time_local

通用日誌格式下的本地時間。

用log_format指令設定了日誌格式之後,需要用access_log指令指定日誌檔案存放路徑。

格式如下所示

access_log path

(存放路徑)

[format

(自定義日誌格式名稱)

[buffer

=size

|off

]]

在nginx中有自己預設的日誌路徑,如下內容:

#access_log  logs/access.log  main;

如果想關閉日誌,可以如下:

access_log off

;

值得注意的是,nginx程序設定的使用者和組必須對日誌路徑有建立檔案的許可權,否則,會報錯。

此外,對於每一條日誌記錄,都將是先開啟檔案,再寫入日誌,然後關閉。可以使用open_log_file_cache來設定日誌檔案快取(預設是off)。

為了方便對日誌進行分析計算,需要對日誌進行定時切割。定時切割的方式有按照月切割、按天切割,按小時切割等。最常用的是按天切割。

#!/bin/bash

# 設定日誌檔案存放目錄

logs_path

="/var/logs/nginx/"

# 設定pid檔案

pid_path

="/usr/local/dev/nginx/nginx.pid"

# 重新命名日誌檔案

mv $

access

.log $

access_$

(date -d

"yesterday"

+"%y%m%d"

).log

# 向nginx主程序發訊號重新開啟日誌

kill

-usr1

`cat $`

進行編輯

crontab -e

配置內容如下

00*

**bash

/usr

/local

/dev

/nginx

/nginx_log.sh

這樣在每天的夜晚12點就會自動建立備份檔案了。.

(完)

本文由 

梁桂釗發表於 

梁桂釗的部落格

Nginx實戰(三) 日誌配置與切割

訪問日誌主要記錄客戶端訪問nginx的每乙個請求,格式可以自定義。通過訪問日誌,你可以得到使用者地域 跳轉 使用終端 某個url訪問量等相關資訊。nginx中訪問日誌相關指令主要有兩條,一條是log format,用來設定日誌的格式,另外一條是access log,用來指定日誌文職的存放路徑 格式和...

Nginx初學(三)日誌的配置

1 進入到nginx的日誌目錄,我們可以看到下圖的三個檔案 其中nginx.pid中存放的是程序號,access.log是訪問日誌,error是錯誤日誌。2 我們開啟配置檔案,可以設定自己的日誌檔案。如下,配置好後儲存,重啟nginx。server access log logs wuaipic.l...

SpringBoot 三 日誌檔案

總結 1 springboot底層使用slf4 logback的方式進行日誌記錄 2 springboot將其他的日誌檔案都替換成slf4.3 中間包替換?4 如果我們要引入其他框架?一定要把這個框架的預設配置移除掉 要不包名類名一直則衝突 如下圖 springboot日誌檔案配置預設是info級別...