日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

關于Nginx 日志

Nginx 日志分為兩種,一種是錯誤日志(error log),記錄 Nginx 運行過程中遇到的異常,一種是訪問日志(access log),記錄的是 WEB 服務被用戶訪問時留下的一些信息。例如哪些文件被訪問過、Nginx 如何響應、用戶使用的 IP 地址等等。

 

1 開啟訪問日志

要開啟訪問日志,在 nginx.conf 文件中的 http 或 server 字段添加以下參數:
access_log log_file log_format;
其中 log_file 為日志要保存的路徑,log_format 為日志記錄格式。記錄格式可以采用默認,也可以在 http 字段中自定義:
log_format format_name 'set_of_variables_to_define_format';
其中 format_name 表示這個日志格式的名稱,在引用時需要用到。set_of_variables_to_define_format 表示此日志格式所記錄的信息及順序。
訪問日志格式詳解可見此官方文檔。
小提示:
• server 字段如果未設置訪問日志,則該 server 訪問日志會繼承 http 字段中的設置。
• server 字段中的 location 字段也可單獨設置訪問日志。
• 每個字段中都可以設置多個不同格式的日志。

 

2 開啟錯誤日志

要開啟錯誤日志,在 nginx.conf 文件中 http 字段添加以下參數:
error_log log_file log_level;
其中 log_file 為日志要保存的路徑,log_level 為要記錄的日志級別,設置某個級別后,該級別及以上級別的錯誤日志都將被記錄。
錯誤日志共分為 8 個級別,從高到低分別是:
• emerg: 緊急,可能導致服務不可用。
• alert: 告警,嚴重問題告警。
• crit: 嚴重,需要關注的嚴重問題。
• error: 錯誤,發生錯誤,例如某個頁面處理錯誤。
• warn: 警示,可能需要關注的問題。
• notice: 通知,簡單的通知日志,大多數情況下可以忽略。
• info: 信息,運行中的普通信息。
• debug: 調試,用于分析錯誤的調試信息。

 

3 日志按天或按月存放

通常配置情況下,Nginx 所有訪問日志存放在同一個 log 文件中,時間一長,日志文件將變得巨大,導致備份、分析都不方便。因此需要將日志按一定時間間隔分開存放,例如每天、每月或其它時間間隔。要實現這個目的主要由兩種方式:
• 一種是在 nginx.conf 配置文件中進行配置
• 一種是使用系統定時任務腳本定期對日志進行分割

3.1 在 nginx.conf 中配置日志存放規則

在這里,我們需要用到 map 指令,map 指令是由 ngx_http_map_module 模塊提供的,默認情況下安裝 nginx 都會安裝該模塊。map 指令只能位于 nginx.conf 的 http 字段內。具體代碼如下:

http {
......
......

#設置日志按日期或月份滾動
map $time_iso8601 $year {
default 'date';
'~^(?<yyyy>d{4})-' $yyyy;
}

map $time_iso8601 $month {
default 'not';
'~^d{4}-(?<mm>d{2})-' $mm;
}

map $time_iso8601 $day {
default 'found';
'~^d{4}-d{2}-(?<dd>d{2})' $dd;
}

#日志按年-月-日名稱格式存放
#map $time_iso8601 $logfile_date {
# default 'date-not-found';
# '~^(?<year>d{4})-(?<month>d{2})-(?<day>d{2})' $year-$month-$day;
#}

#日志按年-月名稱格式存放
map $time_iso8601 $logfile_month {
default 'date-not-found';
'~^(?<year>d{4})-(?<month>d{2})' $year-$month;
}
}

 

使用 map 定義好變量之后,即可在配置訪問日志記錄時使用該變量:
access_log logs/$logfile_month.access.log;
access_log 指令可以在 http 字段內,也可以在 server 字段內。
配置好后,如果遇到日志文件并沒有生成的問題,則可能是 logs 目錄權限導致,需要賦予 logs 目錄 nginx 啟動用戶的權限(這是在日志路徑中使用變量的一些限制,參考官方:Nginx 日志模塊說明)。假設 nginx 以 www 組的 www 用戶啟動,則:
chown -R www:www logs/
最終生成的日志效果如下:

「干貨」Nginx日志配置經驗分享

 


「干貨」Nginx日志配置經驗分享

 


關于在日志路徑中使用變量的限制,包括:
日志文件路徑可以包含變量 (0.7.6+),但這類設置存在以下限制:
• 啟動 Nginx worker 進程的用戶必須擁有日志目錄的寫權限;
• 寫緩存將不起作用;
• 每條日志寫入都會造成日志文件的打開和關閉。然而,由于頻繁讀寫的文件的文件描述符可能會被存儲與緩存中,根據 open_log_file_cache 指令的時間參數設置,日志可能繼續寫入到舊文件中;
• 每條日志寫入時都會檢測站點根目錄是否存在,如果不存在則日志不會創建,因此最好在 access_log 設置的同級別指令段中指定站點根目錄,例如:

server {
root /spool/vhost/data/$host;
access_log /spool/vhost/logs/$host;
...


也有使用 if 判斷語句來定義上面的變量,但據說可能引發問題,建議使用 map 指令。

3.2 通過定時腳本分割日志

創建日志分割腳本 splitLog.sh :
# /bin/bash
# 日志保存位置
base_path='/usr/local/nginx/logs/'
# 獲取當前年信息和月信息
log_path=$(date -d yesterday +"%Y%m")
# 獲取昨天的日信息
day=$(date -d yesterday +"%d")
# 按年月創建文件夾
mkdir -p $base_path/$log_path
# 備份昨天的日志到當月的文件夾
mv $base_path/access.log $base_path/$log_path/access_$day.log
# 輸出備份日志文件名
# echo $base_path/$log_path/access_$day.log
# 通過Nginx信號量控制重讀日志
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
添加linux定時任務:
crontab -e
# 每天0時1分進行日志分割(建議在02-04點之間,系統負載小)
01 00 * * * /usr/local/nginx/logs/splitLog.sh
重啟Linux定時任務:
crond restart
如果提示以下錯誤 crond: can't lock /var/run/crond.pid, otherpid may be 4141:資源暫時不可用,刪除 /var/run/crond.pid 重新執行命令即可。

 

作者:李凌

分享到:
標簽:日志 Nginx
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定