一:作用
Ngx_http_log_module:定義日志格式,并且以指定的格式保存。
二:示例配置
log_format compression '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" "$gzip_ratio"';
access_log /spool/logs/nginx-access.log compression buffer=32k;
三:access_log
句法: access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
access_log off;
默認(rèn): access_log logs / access.log合并;
語境: http,server,location,if in location,limit_except
1:[buffer=size]
設(shè)置緩沖日志寫入的路徑,格式和配置。
2:gzip[=level]
如果使用該 gzip 參數(shù),則在寫入文件之前,緩沖的數(shù)據(jù)將被壓縮。 壓縮級別可以設(shè)置在1(最快,較少壓縮)和9(最慢,最佳壓縮)之間。 默認(rèn)情況下,緩沖區(qū)大小等于64K字節(jié),壓縮級別設(shè)置為1.由于數(shù)據(jù)是以原子塊壓縮的,因此日志文件可以隨時解壓或由“ zcat ” 讀取 。
3:[flush=time]
保存在緩存區(qū)中的最長時間。
四:log_format
指定日志格式
log_format compression '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" "$gzip_ratio"';
1:remote_addr, $http_x_forwarded_for 記錄客戶端IP地址
2:remote_user 記錄客戶端用戶名稱
3:request 記錄請求的URL和HTTP協(xié)議
4:status 記錄請求狀態(tài)
5:body_bytes_sent 發(fā)送給客戶端的字節(jié)數(shù),不包括響應(yīng)頭的大?。?該變量與Apache模塊mod_log_config里的“%B”參數(shù)兼容。
6:bytes_sent 發(fā)送給客戶端的總字節(jié)數(shù)。
7:connection 連接的序列號。
8:connection_requests 當(dāng)前通過一個連接獲得的請求數(shù)量。
9:msec 日志寫入時間。單位為秒,精度是毫秒。
10:pipe 如果請求是通過HTTP流水線(pipelined)發(fā)送,pipe值為“p”,否則為“.”。
11:http_referer 記錄從哪個頁面鏈接訪問過來的
12:http_user_agent 記錄客戶端瀏覽器相關(guān)信息
13:request_length 請求的長度(包括請求行,請求頭和請求正文)。
14:request_time 請求處理時間,單位為秒,精度毫秒; 從讀入客戶端的第一個字節(jié)開始,直到把最后一個字符發(fā)送給客戶端后進(jìn)行日志寫入為止。
15:time_iso8601 ISO8601標(biāo)準(zhǔn)格式下的本地時間。
16:time_local 通用日志格式下的本地時間。
五:open_log_file_cache
句法: open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
open_log_file_cache off;
默認(rèn):
open_log_file_cache off;
語境: http,server,location
作用:定義一個緩存,用于存儲名稱中包含變量的常用日志的文件描述符。該指令具有以下參數(shù):
- max: 設(shè)置緩存中描述符的最大數(shù)量; 如果緩存變滿,則最近最少使用(LRU)描述符關(guān)閉
- inactive: 設(shè)置在此時間之后如果沒有訪問時緩存的描述符被關(guān)閉的時間; 默認(rèn)情況下為10秒
- min_uses: 在 inactive 參數(shù)定義的時間內(nèi)設(shè)置文件使用的最小數(shù)量,以使描述符在緩存中保持打開狀態(tài); 默認(rèn)情況下,1
- valid: 設(shè)置應(yīng)檢查文件是否仍然存在同名的時間; 默認(rèn)情況下為60秒
- off: 禁用緩存
用法示例:
open_log_file_cache max = 1000 inactive = 20s valid = 1m min_uses = 2
六:日志切割
1. 定義日志輪滾策略
# vim nginx-log-rotate
/data/weblogs/*.log {
nocompress
daily
copytruncate
create
notifempty
rotate 7
olddir /data/weblogs/old_log
missingok
dateext
postrotate
/bin/kill -HUP `cat /var/run/nginx.pid 2> /dev/null` 2> /dev/null || true
endscript
}
[warning]/data/weblogs/*.log使用通配符時,/data/weblogs/目錄下的所有匹配到的日志文件都將切割。如果要切割特定日志文件,就指定到該文件。[/warning]
2. 設(shè)置計(jì)劃任務(wù)
59 23 * * * root ( /usr/sbin/logrotate -f /PATH/TO/nginx-log-rotate)
這樣每天23點(diǎn)59分鐘執(zhí)行日志切割。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。