5.Nginx日志(error_log、access_log、log_format、Nginx變量)

Nginx日志類型

nginx的日志有兩種,error_log是錯(cuò)誤日志,access_log是使用日志

1.error_log: nginx處理http請(qǐng)求錯(cuò)誤狀態(tài),以及nginx服務(wù)本身運(yùn)行錯(cuò)誤的狀態(tài),以不同錯(cuò)誤級(jí)別記錄到error_log內(nèi).

Syntax:?語法:error_log?file?[level];

Default:?違約:error_log logs/error.log error;

Context:?背景:main,?http,?mail,?stream,?server,?location

Configures logging. Several logs can be specified on the same level (1.5.2). If on the?main?configuration level writing a log to a file is not explicitly defined, the default file will be used.

配置日志記錄。 可以在同一級(jí)別(1.5.2)上指定多個(gè)日志。 如果在主配置級(jí)別上未顯式定義將日志寫入文件,則將使用默認(rèn)文件。

The first parameter defines a?file?that will store the log. The special value?stderr?selects the standard error file. Logging to?syslog?can be configured by specifying the “syslog:” prefix. Logging to a?cyclic memory buffer?can be configured by specifying the “memory:” prefix and buffer?size, and is generally used for debugging (1.7.11).

第一個(gè)參數(shù)定義一個(gè)將存儲(chǔ)日志的文件。 特殊值 stderr 選擇標(biāo)準(zhǔn)錯(cuò)誤文件。 可以通過指定"syslog:"前綴來配置對(duì) syslog 的日志記錄。 可以通過指定"memory:"前綴和緩沖區(qū)大小來配置對(duì)循環(huán)內(nèi)存緩沖區(qū)的日志記錄,通常用于調(diào)試(1.7.11)。

The second parameter determines the?level?of logging, and can be one of the following:?debug,?info,?notice,?warn,?error,?crit,?alert, or?emerg. Log levels above are listed in the order of increasing severity. Setting a certain log level will cause all messages of the specified and more severe log levels to be logged. For example, the default level?error?will cause?error,?crit,?alert, and?emerg?messages to be logged. If this parameter is omitted then?error?is used.

第二個(gè)參數(shù)決定日志記錄的級(jí)別,可以是以下參數(shù)之一: debug、 info、 notice、 warn、 error、 crit、 alert 或 emerg。 上面的日志級(jí)別是按嚴(yán)重性增加的順序列出的。 設(shè)置某個(gè)日志級(jí)別將導(dǎo)致記錄指定的和更嚴(yán)重的日志級(jí)別的所有消息。 例如,默認(rèn)級(jí)別錯(cuò)誤將導(dǎo)致記錄錯(cuò)誤、 crit、 alert 和 emerg 消息。 如果省略此參數(shù),則使用錯(cuò)誤。

Nginx官網(wǎng)文檔地址:http://nginx.org/en//docs/ngx_core_module.html#error_log

?2.access_log: 記錄nginx每一次的http請(qǐng)求的訪問狀態(tài),主要用于去分析每一次http的請(qǐng)求和客戶端的交互以及對(duì)行為的一些分析

代碼示例:

access_log? /var/log/nginx/access.log? main;

語法:

Syntax:?語法:access_log?path?[format?[buffer=size] [gzip[=level]] [flush=time] [if=condition]];

access_log?off;

Default:?違約:access_log logs/access.log combined;

Context:?背景:http,?server,?location,?if in location,?limit_except

Nginx官網(wǎng)文檔地址:http://nginx.org/en//docs/http/ngx_http_log_module.html#access_log


備注:nginx的日志主要依賴于log_format的配置,nginx的日志里面記錄的信息可以理解為就是log_format,但是log_format又是一個(gè)一個(gè)的變量拼接起來的,所以下面來看看log_format


log_format配置

官網(wǎng)對(duì)log_format配置的介紹是"指定日志格式"。

代碼示例:

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

? ? ? ? ? ? ? ? ? ? ? ????????'$status $body_bytes_sent "$http_referer" '

? ? ? ? ? ? ? ? ? ? ? ????????'"$http_user_agent" "$http_x_forwarded_for"';

access_log? /var/log/nginx/access.log? main;

語法分析:

Syntax:(語法:)log_format?name?[escape=default|json|none]?string?...;

備注:結(jié)合上面的使用示例 ,語法中的?name=main , 然后?[escape=default|json|none]這些參數(shù)都沒有填 , 語法中的?string就是后面所有的字符串了 , 示例中string 的值全是不同的變量拼接的一個(gè)字符串 , 所以下面還得接著看看Nginx變量的介紹,

Default:(缺省值:)log_format combined "...";

Context:(環(huán)境:)http

備注:對(duì)于log_format配置的位置是有約束的 , 這里Context寫明了http , 那log_format就只能配置在http模塊中,不要配置在server中了,server屬于http模塊中的子模塊了

Nginx官網(wǎng)文檔地址:http://nginx.org/en//docs/http/ngx_http_log_module.html#log_format



Nginx變量

nginx的變量主要分三種:

http內(nèi)核模塊提供的變量 :

參數(shù)名稱 注釋

$arg_PARAMETER HTTP 請(qǐng)求中某個(gè)參數(shù)的值,如/index.php?site=www.ttlsa.com,可以用$arg_site 取得www.ttlsa.com這個(gè)值.

$args HTTP 請(qǐng)求中的完整參數(shù)。例如,在請(qǐng)求/index.php?width=400&height=200 中,$args表示字符串width=400&height=200.

$binary_remote_addr 二進(jìn)制格式的客戶端地址。例如:\\x0A\\xE0B\\x0E

$body_bytes_sent 表示在向客戶端發(fā)送的http響應(yīng)中,包體部分的字節(jié)數(shù)

$content_length 表示客戶端請(qǐng)求頭部中的Content-Length 字段

$content_type 表示客戶端請(qǐng)求頭部中的Content-Type 字段

$cookie_COOKIE 表示在客戶端請(qǐng)求頭部中的cookie 字段

$document_root 表示當(dāng)前請(qǐng)求所使用的root 配置項(xiàng)的值

$uri 表示當(dāng)前請(qǐng)求的URI,不帶任何參數(shù)

$document_uri 與$uri 含義相同

$request_uri 表示客戶端發(fā)來的原始請(qǐng)求URI,帶完整的參數(shù)。

$uri和$document_uri未必是用戶的原始請(qǐng)求,在內(nèi)部重定向后可能是重定向后的URI,而$request_uri 永遠(yuǎn)不會(huì)改變,始終是客戶端的原始URI.

$host 表示客戶端請(qǐng)求頭部中的Host字段。如果Host字段不存在,則以實(shí)際處理的server(虛擬主機(jī))名稱代替。如果Host字段中帶有端口,如IP:PORT,那么$host是去掉端口的,它的值為IP。

$host 是全小寫的。這些特性與http_HEADER中的http_host不同,http_host只取出Host頭部對(duì)應(yīng)的值。

$hostname 表示 Nginx所在機(jī)器的名稱,與 gethostbyname調(diào)用返回的值相同

$http_HEADER 表示當(dāng)前 HTTP請(qǐng)求中相應(yīng)頭部的值。HEADER名稱全小寫。例如,示請(qǐng)求中 Host頭部對(duì)應(yīng)的值 用 $http_host表

$sent_http_HEADER 表示返回客戶端的 HTTP響應(yīng)中相應(yīng)頭部的值。HEADER名稱全小寫。例如,用 $sent_ http_content_type表示響應(yīng)中 Content-Type頭部對(duì)應(yīng)的值

$is_args 表示請(qǐng)求中的 URI是否帶參數(shù),如果帶參數(shù),$is_args值為 ?,如果不帶參數(shù),則是空字符串

$limit_rate 表示當(dāng)前連接的限速是多少,0表示無限速

$nginx_version 表示當(dāng)前 Nginx的版本號(hào)

$query_string 請(qǐng)求 URI中的參數(shù),與 $args相同,然而 $query_string是只讀的不會(huì)改變

$remote_addr 表示客戶端的地址

$remote_port 表示客戶端連接使用的端口

$remote_user 表示使用 Auth Basic Module時(shí)定義的用戶名

$request_filename 表示用戶請(qǐng)求中的 URI經(jīng)過 root或 alias轉(zhuǎn)換后的文件路徑

$request_body 表示 HTTP請(qǐng)求中的包體,該參數(shù)只在 proxy_pass或 fastcgi_pass中有意義

$request_body_file 表示 HTTP請(qǐng)求中的包體存儲(chǔ)的臨時(shí)文件名

$request_completion 當(dāng)請(qǐng)求已經(jīng)全部完成時(shí),其值為 “ok”。若沒有完成,就要返回客戶端,則其值為空字符串;或者在斷點(diǎn)續(xù)傳等情況下使用 HTTP range訪問的并不是文件的最后一塊,那么其值也是空字符串。

$request_method 表示 HTTP請(qǐng)求的方法名,如 GET、PUT、POST等

$scheme 表示 HTTP scheme,如在請(qǐng)求 https://nginx.com/中表示 https

$server_addr 表示服務(wù)器地址

$server_name 表示服務(wù)器名稱

$server_port 表示服務(wù)器端口

$server_protocol 表示服務(wù)器向客戶端發(fā)送響應(yīng)的協(xié)議,如 HTTP/1.1或 HTTP/1.0?

內(nèi)置變量 : 可以打開Nginx官方文檔http://nginx.org/en//docs/http/ngx_http_log_module.html#log_format查看

$bytes_sent????發(fā)送的字節(jié)數(shù)的客戶端

$connection????連接序號(hào)

$connection_requests????在當(dāng)前經(jīng)由一個(gè)連接 (1.1. 18)

$msec????時(shí)間在毫秒和秒的分辨率在寫日志

$pipe ????“p如果請(qǐng)求是 “流水線”.“否則

$request_length???? 請(qǐng)求 ( 包含請(qǐng)求行、報(bào)頭和請(qǐng)求主體)

$request_time ????請(qǐng)求處理時(shí)間 (以秒和毫秒的分辨率 ;經(jīng)過的時(shí)間之間的第一字節(jié)讀取到客戶端和服務(wù)器的日志寫入的最后一個(gè)字節(jié)后被傳送至客戶端

$status ????狀態(tài)響應(yīng)

$time_iso8601 ????當(dāng)?shù)貢r(shí)間在 ISO 8601 格式標(biāo)準(zhǔn)

$time_local ????在當(dāng)?shù)貢r(shí)間的公共日志格式

自定義變量 : 自己定義



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 大多數(shù) Nginx 新手都會(huì)頻繁遇到這樣一個(gè)困惑,那就是當(dāng)同一個(gè)location配置塊使用了多個(gè) Nginx 模塊...
    SkTj閱讀 8,246評(píng)論 0 12
  • Nginx簡(jiǎn)介 解決基于進(jìn)程模型產(chǎn)生的C10K問題,請(qǐng)求時(shí)即使無狀態(tài)連接如web服務(wù)都無法達(dá)到并發(fā)響應(yīng)量級(jí)一萬的現(xiàn)...
    魏鎮(zhèn)坪閱讀 2,214評(píng)論 0 9
  • 1.ngnix介紹 ngnix www服務(wù)軟件 俄羅斯人開發(fā) 開源 性能很高 本身是一款靜態(tài)WWW軟件 靜態(tài)小文件...
    逗比punk閱讀 2,237評(píng)論 1 6
  • 1.簡(jiǎn)介: ? Nginx:engine X ,2002年,開源,商業(yè)版? http協(xié)議:web服務(wù)器(類似于ht...
    尛尛大尹閱讀 2,011評(píng)論 0 3
  • I/O模型Nginx介紹Nginx的安裝和目錄結(jié)構(gòu)Nginx的配置Nginx的編譯安裝 一、I/O模型 (一)I/...
    哈嘍別樣閱讀 974評(píng)論 0 4

友情鏈接更多精彩內(nèi)容