Nginx如何對日誌文件進行配置?
阿新 • • 發佈:2019-03-01
bin request 絕對路徑 今天 referer 重要 就會 off 最重要的
在我們日常工作開發中,對調試bug最重要的手段就是查看日誌和斷點調試了。
今天我們來說日誌文件,Nginx的日誌文件一般保存的是訪問日誌和錯誤日誌。
1. 用來log_format指令設置日誌格式
log_format指令語法:log_format name format [format ...] Nginx默認的combined格式如下: log_format combined '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"'; 其中$remote_addr 和$http_x_forward_for用於記錄IP地址 $remote_user 用於記錄遠程客戶端用戶名稱 $time_local 用於記錄訪問時間和時區 $request 用於記錄請求URL與HTTP協議 $status 用於記錄請求狀態 $body_bytes_sent 用於記錄發送給客戶端的文件主體內容大小 $http_referer 用於記錄是從哪個頁面鏈接訪問過來的 $http_user_agent 用於記錄客戶端瀏覽器的相關內容
2. 用access_log指令指定訪問日誌文件存放路徑
access_log指令語法:access_log path [format [buffer=size | off]]
format即第一點中log_format的name,如何設置了format,那麽日誌文件就會按設置的日誌格式生成日誌文件.
butter=size表示內存緩沖區的大小,例如可以設置buffer=32k
3. 用error_log指令指定錯誤日誌文件存放路徑
error_log <FILE> <LEVEL>; <FILE>:可以指定任意存放日誌的目錄 <LEVEL>:錯誤日誌級別,常見的錯誤日誌級別有[debug | info | notice | warn | error | crit | alert | emerg],級別越高記錄的信息越少。 生產場景一般是 warn | error | crit 這三個級別之一
4. Nginx日誌文件的切割
日積月累下,日誌文件會越來越大,日誌文件太大嚴重影響服務器效率,須要定時對日誌文件進行切割。 切割的方式有按月切割、按天切割、按小時切割,一般都是按天切割。 那麽如何進行切割呢? 步驟如下: 1. 創建日誌文件存放路徑 2. 將日誌文件以當天時間為名字進行重命名 3. 發送kill -USR1信號給Nginx的主進程號,讓Nginx重新生成一個新的日誌文件 步驟知道了,那具體的代碼呢? 把如下代碼保存為一個sh文件,然後利用crontab讓這個sh文件每天在00:00定時執行這個腳本 註意最後一步要換成自己環境下nginx.pid的絕對路徑 #!/bin/bash logs_path="/data1/logs/" mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/ mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log kill -USR1 `cat /var/nginx/nginx.pid`
Nginx如何對日誌文件進行配置?