一:作用
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; 默認: access_log logs / access.log合并; 語境: http,server,location,if in location,limit_except
1:[buffer=size]設置緩沖日志寫入的路徑,格式和配置。
2:gzip[=level]如果使用該 gzip 參數,則在寫入文件之前,緩沖的數據將被壓縮。 壓縮級別可以設置在1(最快,較少壓縮)和9(最慢,最佳壓縮)之間。 默認情況下,緩沖區大小等于64K字節,壓縮級別設置為1.由于數據是以原子塊壓縮的,因此日志文件可以隨時解壓或由“ zcat ” 讀取 。
3:[flush=time]保存在緩存區中的最長時間。
四: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協議 4:status 記錄請求狀態 5:body_bytes_sent 發送給客戶端的字節數,不包括響應頭的大??; 該變量與Apache模塊mod_log_config里的“%B”參數兼容。 6:bytes_sent 發送給客戶端的總字節數。 7:connection 連接的序列號。 8:connection_requests 當前通過一個連接獲得的請求數量。 9:msec 日志寫入時間。單位為秒,精度是毫秒。 10:pipe 如果請求是通過HTTP流水線(pipelined)發送,pipe值為“p”,否則為“.”。 11:http_referer 記錄從哪個頁面鏈接訪問過來的 12:http_user_agent 記錄客戶端瀏覽器相關信息 13:request_length 請求的長度(包括請求行,請求頭和請求正文)。 14:request_time 請求處理時間,單位為秒,精度毫秒; 從讀入客戶端的第一個字節開始,直到把最后一個字符發送給客戶端后進行日志寫入為止。 15:time_iso8601 ISO8601標準格式下的本地時間。 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; 默認: open_log_file_cache off; 語境: http,server,location
作用:定義一個緩存,用于存儲名稱中包含變量的常用日志的文件描述符。該指令具有以下參數: max: 設置緩存中描述符的最大數量; 如果緩存變滿,則最近最少使用(LRU)描述符關閉 inactive: 設置在此時間之后如果沒有訪問時緩存的描述符被關閉的時間; 默認情況下為10秒 min_uses: 在 inactive 參數定義的時間內設置文件使用的最小數量,以使描述符在緩存中保持打開狀態; 默認情況下,1 valid: 設置應檢查文件是否仍然存在同名的時間; 默認情況下為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. 設置計劃任務
59 23 * * * root ( /usr/sbin/logrotate -f /PATH/TO/nginx-log-rotate)
這樣每天23點59分鐘執行日志切割。