日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nginx如何自定义日志记录格式?

發布時間:2024/1/8 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nginx如何自定义日志记录格式? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?Nginx日志主要分為兩種:access_log(訪問日志)和error_log(錯誤日志)。通過訪問日志我們可以得到用戶的IP地址、瀏覽器的信息,請求的處理時間等。錯誤日志記錄了訪問出錯的信息,可以幫助我們找到錯誤的原因。

配置access_log

訪問日志主要記錄客戶端的請求信息,客戶端向Nginx服務器發起的每一次請求都記錄在這里。

客戶端IP,瀏覽器信息,referer,請求處理時間,請求URL等都可以在訪問日志中得到。當然具體要記錄哪些信息,你可以通過log_format指令自定義。

語法

以上是access_log指令的基本語法和參數的含義。下面我們看一幾個例子加深一下理解。

基本用法

access_log?/var/logs/nginx-access.log

該例子指定日志的寫入路徑為/var/logs/nginx-access.log,日志格式使用默認的combined。

access_log?/var/logs/nginx-access.log?buffer=32k?gzip?flush=1m

該例子指定日志的寫入路徑為/var/logs/nginx-access.log,日志格式使用默認的combined,指定日志的緩存大小為32k,日志寫入前啟用gzip進行壓縮,壓縮比使用默認值1,緩存數據有效時間為1分鐘。

Nginx預定義了名為combined日志格式,如果沒有明確指定日志格式默認使用該格式:

? ? ? ? ? ? ? ? ? ? '$remote_addr?-?$remote_user?[$time_local]?'
????????????????????'"$request"?$status?$body_bytes_sent?'
????????????????????'"$http_referer"?"$http_user_agent"';

下面是常用的一些變量含義:

如果不想使用Nginx預定義的格式,可以通過log_format指令來自定義。

下面演示一下自定義日志格式的使用:

access_log?/var/logs/nginx-access.log?main log_format??main??'$remote_addr?-?$remote_user?[$time_local]?"$request"?''$status?$body_bytes_sent?"$http_referer"?''"$http_user_agent"?"$http_x_forwarded_for"';

我們使用log_format指令定義了一個main的格式,并在access_log指令中引用了它。假如客戶端有發起請求,我們看一下我截取的一個請求的日志記錄:

112.195.209.90?-?-?[20/Feb/2018:12:12:14?+0800]? "GET?/?HTTP/1.1"?200?190?"-"?"Mozilla/5.0?(Linux;?Android?6.0;?Nexus?5?Build/MRA58N)? AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/63.0.3239.132?Mobile?Safari/537.36"?"-"

我們看到日志記錄中$remote_user、$http_referer、$http_x_forwarded_for都是一個-,這是因為這幾個變量為空。

?

配置error_log

錯誤日志在Nginx中是通過error_log指令實現的。該指令記錄服務器和請求處理過程中的錯誤信息。

語法

配置錯誤日志文件的路徑和日志級別。

error_log?file?[level]; Default:???? error_log?logs/error.log?error;

第一個參數指定日志的寫入位置。

第二個參數指定日志的級別。level可以是debug, info, notice, warn, error, crit, alert,emerg中的任意值。可以看到其取值范圍是按緊急程度從低到高排列的。只有日志的錯誤級別等于或高于level指定的值才會寫入錯誤日志中。默認值是error。

配置open_log_file_cache

每一條日志記錄的寫入順序都是先打開文件,寫入記錄,然后關閉日志文件。

如果日志文件路徑中使用到了變量,如access_log /var/logs/$host/nginx-access.log,為了提高性能,可以使用open_log_file_cache指令設置日志文件描述符的緩存。

語法

open_log_file_cache?max=N?[inactive=time]?[min_uses=N]?[valid=time];

  • max 設置緩存中最多容納的文件描述符數量,如果被占滿,采用LRU算法將描述符關閉。

  • inactive 設置緩存存活時間,默認是10s。

  • min_uses 在inactive時間段內,日志文件最少使用幾次,該日志文件描述符記入緩存,默認是1次。

  • valid:設置多久對日志文件名進行檢查,看是否發生變化,默認是60s。

  • off:不使用緩存。默認為off。

示例

open_log_file_cache?max=1000?inactive=20s?valid=1m?min_uses=2;

例子中,設置緩存最多緩存1000個日志文件描述符,20s內如果緩存中的日志文件描述符至少被被訪問2次,才不會被關閉,每隔1分鐘檢查緩存中的文件描述符的文件名是否還存在。

總結

Nginx中通過access_log和error_log指令配置訪問日志和錯誤日志,通過log_format我們可以自定義日志格式。如果日志文件路徑中使用了變量,我們可以通過open_log_file_cache來設置緩存,提升性能。

總結

以上是生活随笔為你收集整理的nginx如何自定义日志记录格式?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。