nginx日志模塊及日志定時切割


一:作用

  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分鍾執行日志切割。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM